备忘录,也是自己读书和实验的一些心得.
本空间内容除特别注明外,均为原创
一次异常的解决
上一篇 /
下一篇 2008-06-21 19:34:50
/ 个人分类:ORACLE 调优
今天上班用户反映数据库相应很慢。定位到一个全表扫描的表,查了一下50多万笔记录并且没有建任何索引。这个表是一个存储临时输入的表。正常情况下不应该超过150笔记录。删除异常的数据后。问题有缓解,但是操作系统命令看top发现cpu使用率依然很高。估计是因为高水标记的上升造成full table scan的效率下降。在业务不繁忙的时候将该表重建。问题解决。
知识点: 将盘区中的块想象成一列,则高水标记位于一个段使用的最后一个块,在删除数据后,高水标记并不会下降。全表扫描会扫描高水标记以下的所有块。这样当大批量删除数据的时候,全表扫描的效率将会下降,有的时候查空表会很慢就是这个原因。有两种方法可以下降高水标记,1用truncate来替代delete 语句。如果有dataguard的配置,则不能使用这个命令。2 重建表。
ps: 感谢lxz兄对我的斧正。
再次测试的时候,truncate 确实可以使用。产生的日志比delete较少。
导入论坛
引用链接
收藏
分享给好友
推荐到圈子
管理
举报
TAG: