ORACLETRUNCATE执⾏过慢
问题描述:
TRUNCATE TABLE VMSBUSI.VMS_MAILBOX_INFO; VMS_MAILBOX_INFO表中只有35条记录,TRUNCATE表要⽤1分钟左右。
问题解决:
这些索引基本上每个都是1G左右,且都是初始EXTENT的⼤⼩。显然导致问题的原因已经明确了,表包含了多个索引,且每个索引的初始段太⼤,因此TRUNCATE执⾏的时候对索引执⾏⼤量的db file sequence wait的操作,从⽽导致了TRUNCATE语句性能问题。
现在在处理⼀批数据,⼩表还好,⼤表动辄上千万,删的时候确实太慢,经领导指导,总结以下⼏条经验。
1,在每条语句后⾯添加commit;
truncate删除数据2,添加⾜够的redo⽇志组; alter database add logfile group 4 '路径/redo04.log' size 500M;
3,删除数据时会遇到⽆法扩展undo表空间,为undo表空间添加⾜够的数据⽂件;
4,删除⽆关的索引,保留与其他表有关联的和主键索引;
5,经常查看后台session,避免死锁
6,排查是否有触发器

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。