oracle中聚类因子统计的含义

目录

聚类因子又称集群因素、聚类系数

计算方法:

解释:

如何降低聚类因子


本文档摘自Doc ID 39836.1

聚类因子又称集群因素、聚类系数

聚类系数是为基于成本的优化器(CBO)收集的统计数字,是衡量一个指数与它所依据的表格相比的 "有序性指数与它所依据的表格相比的 "有序性"。它被用来作为一个指标,用于计算在一个表格之后的估计的索引访问后的表查询成本。

       聚类因子记录了扫描索引时将被访问的数据块的数量。

       聚类因子值可以在以下视图中看到:

  • ALL|DBA|USER_INDEXES.
  • ALL|DBA|USER_IND_PARTITIONS 
  • ALL|DBA|USER_IND_SUBPARTITIONS

计算方法:

  • 索引是按顺序扫描的。
  • 当前索引值所指向的rowid的块部分与上一个索引值所指向的块进行比较。前一个索引值所指向的部分进行比较。这是通过比较索引叶子块中相邻的rowid来实现的(块本身不需要访问)。
  • 如果这些rowids指向不同的块,那么一个计数器就会被递增。
  • 这在整个索引中持续进行。
  • 结果的计数被存储。

从12c开始,SET_GLOBAL_PREFS过程允许你为TABLE_CACHED_BLOCKS设置一个值。默认值是1,而
最大为255。这个参数在收集索引聚类因子时使用,它告诉收集引擎任何表在缓冲区缓存的平均块数。对于小表,这可能有相当大的影响,而对于大的对象则没有那么大的影响,因为255将是对象的一个不太重要的比例。建议是让这个参数保持在默认值。

详见官方文档:

Oracle® Database PL/SQL Packages and Types Reference
12c Release 1 (12.1)
E17602-14
153 DBMS_STATS
SET_GLOBAL_PREFS Procedure

解释:

        如果计数接近于表中的块数,那么索引的排序就很好。这是真的,因为计数器只有在实际数据与最后的行数据在不同的块中找到时才会被递增。这意味着是说当一个索引块被读取时,基于该块所需的表查询很可能是在同一个表的块中。所以,集群因子越低,语句所使用的I/O就越少,所以优化器就越可能会选择该索引。

        如果计数接近于表中的行数,那么索引的排序就不太理想。在这种情况下,相邻的索引项并不倾向于指向表中的同一个块,因此可能需要更多的块读取。一个具有比起较低的聚类因子,较高的聚类因子的索引更可能需要重新访问数据块。

        聚类因子可以被优化器用来调整将被特定谓词或查询访问的块的潜在数量。特定谓词或查询访问的潜在块数。这对于确定通过索引访问时将被访问的基础表块的数量是非常有用的。通过索引访问的基表块的数量。

         聚类因子实际上是作为索引查找的结果而被访问的数据块的数量的计数。将聚类因子乘以选择性将得到操作的成本。它主要用于计算索引范围扫描的成本。

如何降低聚类因子

        影响聚类因素的唯一方法是排序,然后以它们在索引中出现的相同顺序存储表中的行。导出行并将它们按原来的顺序放回,不会有任何影响。记住,为适应一个索引而对行进行排序可能会对其他索引的选择产生不利影响。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

森森淼淼丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值