Obsah
Co je to Oracle index clustering factor (CF)?
Faktor shlukování je číslo, které představuje míru, do jaké jsou data náhodně distribuována v tabulce ve srovnání s indexovaným sloupcem. Jednoduše řečeno, je to počet „blokových přepínačů“ při čtení tabulky pomocí indexu.
Je to důležitá statistika, která hraje důležitou roli ve výpočtech optimalizátoru. Používá se ke zvážení výpočtu pro skenování rozsahu indexu. Když je faktor shlukování vyšší, náklady na skenování rozsahu indexu jsou vyšší
Dobrý faktor shlukování je roven (nebo blízko) hodnotám počtu bloků v tabulce.
Chybný shlukovací faktor je roven (nebo blízko) počtu řádků tabulky.
Jak se CF vypočítává?
Oracle vypočítá shlukovací faktor provedením úplného skenování indexu, který prochází bloky listů od konce ke konci. U každé položky v každém listu zkontroluje Oracle absolutní číslo souboru a ID bloku, jak je získáno z ROWID indexované hodnoty. Udržuje průběžný počet, kolik „různých“ bloků obsahuje datové řádky, na které ukazuje index. Adresa bloku z prvního záznamu se porovná s adresou bloku z druhého záznamu. Pokud se jedná o stejný blok tabulky, Oracle počítadlo nezvýší. Pokud se bloky tabulky liší, Oracle do počtu přidá jeden. Tento proces počítání pokračuje od záznamu k záznamu a vždy porovnává předchozí záznam s aktuálním.
Výše uvedené je dobrým příkladem CF, protože CF se rovná počtu bloků
Příklad faktoru špatného shlukování
Zde je faktor shlukování roven počtu řádků
Tento způsob počítání má svůj nečekaný výsledek. Předpokládejme, že data jsou vyplněna přes malou sadu bloků, ale ne v pořadí s odkazem na indexový klíč, pak by se sada řádků mohla jevit jako přes velkou sadu bloků, i když možná existuje jen několik skutečně odlišných bloků . CF by tedy bylo vyšší, ale ve skutečnosti se dotýká jen velmi málo bloků. Tento problém lze v 12c zmírnit použitím předvoleb tabulky a určením tabulky v mezipaměti bloku.
jak zlepšit faktor shlukování v oracle
Znovu sestavení indexu by nemělo žádný vliv na faktor shlukování. Tabulku je třeba seřadit a znovu sestavit, aby se snížil faktor shlukování.
Dotaz k určení faktoru shlukování
CF je uložen v datovém slovníku a lze jej zobrazit z dba_indexes (nebo user_indexes).
Ve skutečnosti všechny statistiky indexu lze nalézt zde
SELECT index_name, index_type, uniqueness, blevel, leaf_blocks, distinct_keys, avg_leaf_blocks_per_key,
avg_data_blocks_per_key, clustering_factor, num_rows, sample_size, last_analyzed, partitioned
FROM dba_indexes
WHERE table_name = 'ORDERS' ;
Jak faktor shlukování indexů Oracle ovlivňuje plán optimalizátoru?
Faktor shlukování je primární statistika, kterou optimalizátor používá ke zvážení přístupových cest k indexu. Jedná se o odhad počtu objektů LIO k tabulkovým blokům potřebných k získání všech řádků, které splňují dotaz v pořadí. Čím vyšší je faktor shlukování, tím více LIO bude optimalizátorem odhadovat potřeba. Čím více LIO je vyžadováno, tím méně atraktivní, a tedy i nákladnější, bude použití indexu.
Související článek
Index oddílů Oracle:Vysvětlení indexu oddílů Oracle, Co jsou globální indexy bez oddílů?, Co jsou místní indexy s předponou, místní index bez předpon
najít indexy v tabulce v oracle:v tomto článku naleznete dotazy, jak Chcete-li najít indexy v tabulce v oracle, vypište všechny indexy ve schématu, stav indexu, sloupec indexu
typy indexů v oracle :Tato stránka obsahuje informace o indexech oracle, různé typy indexů v oracle s příkladem, jak vytvořit/upustit/změnit index v oracle
Virtuální index v Oracle:Co je virtuální index v Oracle? Použití, omezení, výhody a způsob použití ke kontrole plánu vysvětlení v databázi Oracle, skrytý parametr _USE_NOSEGMENT_INDEXES