溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么理解Oracle集群因子

發(fā)布時間:2021-11-11 16:23:22 來源:億速云 閱讀:116 作者:iii 欄目:關系型數(shù)據(jù)庫

本篇內容介紹了“怎么理解Oracle集群因子”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

1. 概念

    集群因子(ClusteringFactor)是如果通過一個索引掃描一張表,需要訪問的表的數(shù)據(jù)塊的數(shù)量。衡量通過索引掃描,通過ROWID 回表的時候,物理讀有多大。

集群因子是索引與它所基于的表相比較而得出的有序性度量,它用于檢查在索引訪問之后執(zhí)行的表查找的成本(將集群因子與選擇性相乘即可得到該操作的成本)。集群因子記錄在掃描索引時將讀取的塊數(shù)量。

如果使用的索引具有較大的集群因子,則必須訪問更多的表數(shù)據(jù)塊才可以獲得每個索引塊中的行(因為鄰近行位于不同的塊中)。

如果集群因子接近于表中的塊數(shù)量,則表示索引適當排序;但是,如果集群因子接近于表中的行數(shù)量,則表示索引沒有適當排序

2. 集群因子的計算方法

(1) 掃描一個索引;

(2) 比較某行的ROWID和前一行的ROWID,如果這兩個ROWID不屬于同一個數(shù)據(jù)塊,那么ClusteringFactor增加1;

(3) 整個索引掃描完畢后,就得到了該索引的ClusteringFactor。

3. 意義

     如果ClusteringFactor接近于表存儲的塊數(shù),說明這張表是按照索引字段的順序存儲的。

    如果集群因子接近于行的數(shù)量,那說明這張表不是按索引字段順序存儲的。

    在計算索引訪問成本時,集群因子十分有用。Clustering Factor乘以選擇性參數(shù)(selectivity)就是訪問索引的開銷。

    如果這個統(tǒng)計數(shù)據(jù)不能反映出索引的真實情況,那么可能會造成優(yōu)化器錯誤地選擇執(zhí)行計劃。另外,如果某張表上的大多數(shù)訪問是按照某個索引做索引掃描,那么將該表的數(shù)據(jù)按照索引字段的順序重新組織,可以提高該表的訪問性能。

    集群因子對執(zhí)行范圍掃描的SQL語句產生影響,如果集群因子接近數(shù)據(jù)塊數(shù)量,滿足查詢要求的數(shù)據(jù)塊的數(shù)量就可以少很多,這樣也增加了數(shù)據(jù)塊已經存在于內存中的可能性。相對于數(shù)據(jù)塊數(shù)量大很多的集群因子,基于索引列的范圍查詢需要掃描更多的數(shù)據(jù)塊。

    我們知道可以通過dbms_rowid.rowid_block_number(rowid)找到記錄對應的block 號。索引中記錄了rowid,因此oracle 就可以根據(jù)索引中的rowid來判斷記錄是否是在同一個block 中。

    舉個例子,比如說索引中有a,b,c,d,e五個記錄,首先比較a,b 是否在同一個block,如果不在同一個block 那么Clustering Factor +1,然后繼續(xù)比較b,c 同理,如果b,c 不在同一個block,那么Clustering Factor+1,這樣一直進行下去,直到比較了所有的記錄。

    根據(jù)算法我們就可以知道clustering factor 的值介于block 數(shù)和表行數(shù)之間。如果clustering factor 接近block 數(shù),說明表的存儲和索引存儲排序接近,也就是說表中的記錄很有序,這樣在做index range scan 的時候能,讀取少量的data block 就能得到我們想要的數(shù)據(jù),代價比較小。如果clustering factor 接近表記錄數(shù),說明表的存儲和索引排序差異很大,在做index range scan 的時候,會額外讀取多個block,因為表記錄分散,代價較高。

4. 相關表

Clustering_factor列是user_indexes,dba_indexes視圖中的一列,該列反應了數(shù)據(jù)相對已索引的列是否顯得有序。

怎么理解Oracle集群因子SQL> select index_name,CLUSTERING_FACTOR from user_indexes;  

實驗參考

https://blog.csdn.net/zhaoyangjian724/article/details/71082379

“怎么理解Oracle集群因子”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI