2020-01-08
请教个问题:一个13M的表update语句执行超过半个小时是什么原因导致
10M这样一个语句:
UPDATE tabname a SET a.colx=NULL WHERE a.colx=‘0’;
colx的数据类型为VARCHAR2(32);
tabname大小为13M,列一共100个,colx在90列的左右;表上的字段没有lob、long类型。colx列上没有索引;此表只有一个主键索引,在ID列。表总行数29944,colx='0’的行数为5000多。
select * from tabname where colx='0’的执行计划是走全表扫描的。

执行update时,经查询没有阻塞,等待事件为db file sequential read。因觉得这个表比较小,白天时执行了update,但执行了几分钟没执行完,就手动kill session了。晚上应用系统几乎没人使用时执行的update,半个小时都没有执行完,最后还是手动kill session了。
执行时undo的使用率很低,redo log几乎都是inactvie的。
请教专家们下,这个可能是什么原因导致的?或者需要做什么操作能确定为什么执行这么久都没执行完?要启用trace跟踪才能确定吗?
收藏
分享
5条回答
默认
最新
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏

评论
