ITPub博客

首页 > 数据库 > Oracle > 数据库数据分布-聚簇因子 Clustering Factor

数据库数据分布-聚簇因子 Clustering Factor

翻译 Oracle 作者:Haoword_wang 时间:2024-05-01 11:08:08 0 删除 编辑

    理解“为什么我的索引没有被使用?”这是一个相对广泛的话题,其中从简单的无索引到SQL执行计划及数据 聚簇因子等原因导致,因此不使用索引有很多不同的原因,上一遍我们介绍了表没有索引及有索引情况下谓词原因,我们接着上一篇继续介绍:聚簇因子

    Oracle聚簇因子是由基于成本的优化器(CBO)收集使用的统计数据,是对索引与其所基于的表进行比较的“有序性”的度量。它被用作计算索引访问后表查找的估计成本的指示器。
    聚簇因子是记录在扫描索引时将被访问的数据块的数量。
Oracle对象的聚簇因子值在如下视图所示:
    所有DBA | | USER_INDEXES。
或者(当对索引进行分区时):
    所有DBA | | USER_IND_PARTITIONS
    所有DBA | | USER_IND_SUBPARTITIONS

有关聚类因子的详情,请参阅:

    Oracle® Database Concepts 11g Release 2 (11.2)
    Part Number E10713-05
    Chapter 3 Indexes and Index-Organized Tables

如果这些队列都指向不同的块,那么计数器就会增加。这贯穿于整个指数然后存储结果计数。

    从12c开始,SET_GLOBAL_PREFS过程允许你为TABLE_CACHED_BLOCKS设置一个值。缺省值为1,最大值为255。在收集索引聚簇因子时使用此参数,它告诉收集引擎在任何表的缓冲区缓存中缓存的块的平均数量。对于小表,这可能会产生相当大的影响,对于较大的对象则不那么重要,因为255在对象中所占的比例较小。建议将此参数保留为默认值。看到的:

    Oracle® Database PL/SQL Packages and Types Reference 12c Release 1 (12.1)
    E17602-14153 DBMS_STATS SET_GLOBAL_PREFS Procedure
‘http://docs.oracle.com/cd/E16655_01/appdev.121/e17602/d_stats.htm#ARPLS68664
’

通过索引访问时将访问的基表块的数量非常有用。
    聚簇因子实际上是索引查找所访问的数据块数量的计数。将聚类因子乘以选择性将得到操作的成本。它主要用于计算索引范围扫描的成本。
常见问题
如何降低聚簇因子

    影响聚类因子的 only 方法是对表中的行进行排序,然后按照它们在索引中出现的顺序将它们存储在表中。导出行并将它们按最初出现的顺序放回原处不会产生任何影响。请记住,对行进行排序以适应一个索引可能会对其他索引的选择产生不利影响。

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

请登录后发表评论 登录
全部评论
Oracle Postgresql MySQL DBA,DEVOPS 开发人员

注册时间:2013-03-03

  • 博文量
    73
  • 访问量
    69126