ITPub博客

首页 > 数据库 > Oracle > 索引聚簇因子虽好,使用需谨慎

索引聚簇因子虽好,使用需谨慎

原创 Oracle 作者:carlocc 时间:2016-03-21 16:37:23 0 删除 编辑
      早上挤公交时拜读了公司牛人的文章 
http://mp.weixin.qq.com/s?_biz=MjM5MzExMTU2OQ==&mid=402651167&idx=1&sn=471fada84cb244779edca222dd2923f7&scene=4#wechat_redirect
     介绍了一条简单sql不简单的优化,看完想起曾经遇到一些sql全表扫描比较慢,明明有索引就是不走,强制走索引反而更慢,生涯一大困扰得以破解。
      然而以往的经验提醒我:oracle里能起到优化改善的措施必然伴随一定的风险!那么优化聚簇因子的好事会伴随什么风险呢?于是想到聚簇因子会不会不降反升、其他索引会怎么想、表能否容忍DBA动它的聚簇因子?
      做了个实验,把表TASK的数据按索引1和2的引导列ID排序创建了表TASK2
整容前的表
TABLE_NAME NUM_ROWS BLOCKS
TASK 15396350 236044
整容后的表
TABLE_NAME NUM_ROWS BLOCKS
TASK2 15396350 236044
整容前的索引
INDEX_NAME CLUSTERING_FACTOR
TASK_INDEX1 14900640
TASK_INDEX2 14719830
TASK_INDEX3 362400
PK_TASK 592060
整容后的索引
INDEX_NAME CLUSTERING_FACTOR
TASK2_INDEX1 1890090
TASK2_INDEX2 709040
TASK2_INDEX3 13609440
PK_TASK2 14465190
可见索引1和2的聚簇因子明显降低,可改善相关的业务性能;但索引3和主键索引的聚簇因子却大大增加,肯定会影响相关业务。
所以优化索引的聚簇因子一定要考虑相同表上其他索引的业务情况,不能拆东墙补西墙;降低聚簇因子的操作也会影响表的在线情况,维护需要成本,能不能动也要看表给不给约(此处想到在线重定义应该可以很好地完成数据按需排序重建);至于过一段时间后聚簇因子会不会升高,我这没实验,但我想如果数据有变动,原有的排序必然受影响,聚簇因子也会升高。





来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26614613/viewspace-2061227/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2013-04-29

  • 博文量
    3
  • 访问量
    8220