oracle 集群因子详解程序员
集群因子(Clustering Factor)
集群因子是索引与它所基于的表相比较而得出的有序性度量,它用于检查在索引访问之后执行的表查找的成本(将集群因子与选择性相乘即可得到该操作的成本)。集群因子记录在扫描索引时将读取的块数量。如果使用的索引具有较大的集群因子,则必须访问更多的表数据块才可以获得每个索引块中的行(因为邻近行位于不同的块中)。如果集群因子接近于表中的块数量,则表示索引适当排序;但是,如果集群因子接近于表中的行数量,则表示索引没有适当排序。集群因子的计算简要介绍如下:
(1) 按顺序扫描索引。
(2) 将当前索引值指向的ROWID的块部分与以前的索引值进行比较(比较索引中的邻近行)。
(3) 如果ROWID指向不同的TABLE块,则增加集群因子(对整个索引执行该操作)。
Clustering_Factor列位于USER_INDEXES视图中,该列反映了数据相对于已索引的列是否显得有序。如果Clustering_Factor列的值接近于索引中的树叶块(leaf block)的数目,表中的数据就是有序的。索引的树叶块存储索引值以及它们指向的ROWID。
例如,CUSTOMERS表上Customer_Id列的值可以由序列生成器产生,而且是表CUSTOMERS上的主键。Customer_Id的索引的集群因子就有可能非常接近于树叶块数(表示有序)。当往数据库中添加客户数据时,它们就按照序列产生器所产生的序列值有序地存储在表中。然而,因为整个表的客户名字排列是随机的,所以customer_name上的索引会有一个很高的集群因子。
集群因子对执行范围扫描的SQL语句有一定的影响。如果集群因子很低(相对于树叶块的数量),需要读取的表中块的数量就可以减少很多。这样也增加了相同的数据块已经存在于内存中的可能性。一个较高的集群因子(相对于树叶块的数量)会增加满足基于索引列的范围查询所需的数据块数目。
技巧:
可以使用表中数据的集群,这样可以提高执行范围扫描类型操作的语句的性能。如果要决定如何在语句中使用列,对列进行索引是最好的选择。
我们知道可以通过dbms_rowid.rowid_block_number(rowid)找到记录对应的block 号。索引中记录了rowid,因此oracle 就可以根据索引中的rowid来判断记录是否是在同一个block 中。举个例子,比如说索引中有a,b,c,d,e五个记录,首先比较a,b 是否在同一个block,如果不在同一个block 那么Clustering Factor +1,然后继续比较b,c 同理,如果b,c 不在同一个block,那么Clustering Factor+1,这样一直进行下去,直到比较了所有的记录。根据算法我们就可以知道clustering factor 的值介于block 数和表行数之间。如果clustering factor 接近block 数,说明表的存储和索引存储排序接近,也就是说表中的记录很有序,这样在做index range scan 的时候能,读取少量的data block 就能得到我们想要的数据,代价比较小。如果clustering factor 接近表记录数,说明表的存储和索引排序差异很大,在做index range scan 的时候,会额外读取多个block,因为表记录分散,代价较高。
集群因子有影响只能在返回多条记录的情况下才能起作用
是用来衡量索引扫描的时候通过ROWID 回表,物理读有多大。
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/7226.html
服务器部署程序员系统优化网站设置运维相关文章
- Oracle的老板路易斯·沃兹尼亚克(oracle的老板)
- 实现 Oracle 数据库构建的最佳实践(如何建oracle数据库)
- 深入理解Oracle集群的原理(oracle集群原理)
- 检测Oracle 集群状态监测:健康检查运行良好(oracle集群状态)
- 查询Oracle数据库中每周的日期(oracle日期周几)
- Oracle集群架构:配置文件指南(oracle集群配置文件)
- Oracle集群存储:实现可靠性与可扩展性(oracle集群存储)
- Oracle集群可靠性保障方案(oracle集群方案)
- 突破瓶颈:Oracle 集群数据库的优势(oracle集群数据库)
- Oracle集群的安装及配置详解(oracle集群安装)
- cloud提升客户效率,尽享Oracle Cloud服务优势(客户寄售oracle)
- Oracle 集群节点:构建高可用性应用(oracle 集群节点)
- 的所有表查询Oracle当前数据库中的所有表(oracle查询当前数据库)
- NET与Oracle携手走向未来(.net 对oracle)
- Oracle免费视频学习,助你成为程序员专家(oracle免费视频下载)
- ODBC支持Oracle,实现数据库协作互联网技术(odbc支持oracle)
- 使用Flume将Oracle中的数据轻松灌入Hadoop集群(flume oracle)
- Oracle主键约束 命名要求及最佳实践(oracle主键约束名字)
- Oracle中Job定时任务的神奇力量(oracle中job是啥)
- Oracle一年添加新函数,把你变成程序员大神(oracle上一年的函数)
- Oracle数据库快速找到正确的URL地址(oracle url地址)
- 关爱程序员 Oracle 与 MySQL 携手共进(oracle musql)
- 班Oracle FMS深入全面的值班保障(oracle fms值)