• oracle优化:避免全表扫描


    oracle优化:避免全表扫描

    http://www.cnblogs.com/oraclelike/p/6146436.html

    如果我们查询了一条SQL语句,这条SQL语句进行了全表扫描,那到底是扫描了多少个数据块呢?是表有多少数据,就扫描多少块吗?不是的。而是扫描高水位线一下的所有块。有的时候有人经常说,我的表也不大呀,怎么查询了这么久,其实奥秘就是高水位线了。

      在数据库表刚建立的时候,由于没有任何数据,所以这个时候水位线是空的,也就是说HWM为最低值。当插入了数据以后,高水位线就会上涨,但是这里也有一个特性,就是如果你采用delete语句删除数据的话,数据虽然被删除了,但是高水位线却没有降低,还是你刚才删除数据以前那么高的水位。也就是说,这条高水位线在日常的增删操作中只会上涨,不会下跌。HWM通常增长的幅度为一次5个数据块.
    
     这也就产生一种我们经常遇到的情况,产生大量碎片。如何消除碎片呢?有move和shrink两种方法。1.如果你只是收缩空间,数据增长很慢,那用shrink可以但是如果数据增长很快的话,用move就比较合适。2.move从segment的底部开始,move这些rows到segment的头部。Shrink则是delete/insert相结合,这样会产生非常多的UNDO和REDO。(move和shrink之后,索引会失效,需要重建索引)推荐使用move。
  • 相关阅读:
    单页面应用 之 项目中集成插件vue-router
    公共组件的创建和使用
    数据库初识
    MySQL的安装 --windows版本
    多线程补充以及协程
    多线程(三)
    多线程(二)
    多线程(一)
    多进程(二)
    多进程(一)
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/9353113.html
Copyright © 2020-2023  润新知