sql >> Databáze >  >> RDS >> Oracle

Jak se počítá shlukovací faktor Oracle Index

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


  1. 5 triků pro zajištění špičkového výkonu serveru SQL

  2. Sběr dat o výkonu pomocí nástroje SQLDiag | Odstraňování problémů s výkonem serveru SQL -6

  3. Vrátí nečíselné hodnoty ze sloupce databáze PostgreSQL

  4. Jak opravit typické chyby WordPress