备忘录,也是自己读书和实验的一些心得. 本空间内容除特别注明外,均为原创

一次异常的解决

上一篇 / 下一篇  2008-06-21 19:34:50 / 个人分类:ORACLE 调优

      今天上班用户反映数据库相应很慢。定位到一个全表扫描的表,查了一下50多万笔记录并且没有建任何索引。这个表是一个存储临时输入的表。正常情况下不应该超过150笔记录。删除异常的数据后。问题有缓解,但是操作系统命令看top发现cpu使用率依然很高。估计是因为高水标记的上升造成full table scan的效率下降。在业务不繁忙的时候将该表重建。问题解决。

      知识点: 将盘区中的块想象成一列,则高水标记位于一个段使用的最后一个块,在删除数据后,高水标记并不会下降。全表扫描会扫描高水标记以下的所有块。这样当大批量删除数据的时候,全表扫描的效率将会下降,有的时候查空表会很慢就是这个原因。有两种方法可以下降高水标记,1用truncate来替代delete 语句。如果有dataguard的配置,则不能使用这个命令。2 重建表。

 

ps: 感谢lxz兄对我的斧正。

再次测试的时候,truncate 确实可以使用。产生的日志比delete较少。


TAG:

Terry  (Junior Oracle DBA) 引用 删除 lxz3000   /   2008-07-29 16:16:28
1用truncate来替代delete 语句。如果有dataguard的配置,则不能使用这个命令。

boss  这个10g好像可以, 我做过很多次了!!
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-10-13  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 1694
  • 日志数: 38
  • 建立时间: 2008-02-23
  • 更新时间: 2008-09-26

RSS订阅

Open Toolbar