Indexování v DBMS: Co je to, typy indexů s PŘÍKLADY

⚡ Chytré shrnutí

Indexování v databázi je technika datových struktur, která rychle vyhledává záznamy pomocí mapy.ping vyhledávací klíč k adrese disku jeho záznamu. Primární, sekundární, shlukovací, víceúrovňové a B-stromové indexy vyměňují prostor, rychlost a údržbu odlišně.

  • 🗂️ Základní myšlenka: Index je malá dvousloupcová tabulka, která páruje klíč s ukazatelem na blok disku, na kterém se záznam nachází.
  • 📇 Primární index: Uspořádaný soubor na klíči, rozdělený na husté a řídké varianty.
  • 🔎 Hustý vs. řídký: Hustý index ukládá jeden záznam na klíč; řídký index ukládá méně záznamů, aby se ušetřilo místo.
  • ???? ️ Sekundární index: Je postaven na neřazeném poli a k ​​dosažení každého odpovídajícího záznamu používá segmenty.
  • ???? ClusterIndex: Seskupuje řádky, které sdílejí nejedinečný klíč, do jednoho clusteru.
  • ???? Index B-stromu: Vyvážený víceúrovňový strom, jehož propojené koncové uzly podporují náhodný a sekvenční přístup.
  • 🇧🇷 Kompromis: Indexy urychlují čtení, ale zpomalují vkládání, aktualizace a mazání a spotřebovávají další místo.

Indexování v databázi

Co je indexování?

Indexování je technika datových struktur, která umožňuje rychlé načtení záznamů z databázového souboru. Index je malá tabulka, která má pouze dva sloupce. První sloupec obsahuje kopii primárního nebo kandidátského klíče tabulky. Druhý sloupec obsahuje sadu ukazatele uchovávající adresu bloku disku, kde je uložena daná specifická hodnota klíče.

Index:

  • Přijímá vyhledávací klíč jako vstup.
  • Efektivně vrací kolekci odpovídajících záznamů.

Bez indexu musí databáze prohledat každý řádek, aby mohla odpovědět na dotaz. S indexem se přeskočí přímo na odpovídající blok, a proto má zvolený typ indexu velký vliv na výkon.

Typy indexování v DBMS

Typ indexů v databázi
Typ indexů v databázi

Indexování v databázi je definováno na základě jejích atributů indexování. Dva hlavní typy metod indexování jsou:

  • Primární indexování
  • Sekundární indexování

Primární index v DBMS

Primární index je uspořádaný soubor s pevnou délkou a dvěma poli. První pole je stejné jako primární klíč a druhé pole odkazuje na daný datový blok. V primárním indexu existuje mezi položkami v indexové tabulce vždy vztah jedna k jedné.

Primární index se dále dělí na dva typy:

  • Hustý index
  • Řídký index

Hustý index

V hustém indexu se pro každou hodnotu klíče vyhledávání v databázi vytvoří záznam. To vám pomůže rychleji vyhledávat, ale vyžaduje to více místa pro ukládání záznamů indexu. V této metodě záznamy obsahují hodnotu klíče vyhledávání a ukazují na skutečný záznam na disku.

Hustý index v DBMS

Řídký index

Řídký index je indexový záznam, který se zobrazuje pouze pro některé hodnoty v souboru. Řídký index vám pomůže vyřešit problémy s hustým indexováním v DBMSV této technice řada indexových sloupců ukládá stejnou adresu datového bloku a když je třeba načíst data, je tato adresa bloku načtena.

Řídký index ukládá záznamy pouze pro některé hodnoty klíčů pro vyhledávání. Potřebuje méně místa a menší režijní náklady na údržbu pro vkládání a mazání, ale je pomalejší než hustý index pro vyhledávání záznamů.

Níže je uveden příklad řídkého indexu databáze.

Řídký index v DBMS

Hustý index vs. řídký index

Dvě primární varianty indexu přinášejí opačné kompromisy, které jsou shrnuty níže.

Vzhled Hustý index Řídký index
Příspěvky Jeden na klíč vyhledávání Jeden na blok
space Více Less
Rychlost vyhledávání Rychlejší Pomaleji
Údržba Vyšší Spodní

Sekundární index v DBMS

Sekundární index v DBMS může být generován polem, které má pro každý záznam jedinečnou hodnotu a mělo by to být kandidátský klíč. Je také známý jako index bez shlukování.

Tato dvouúrovňová technika indexování databáze se používá k redukci mapyping velikost první úrovně. Pro první úroveň je vybrán velký rozsah čísel, takže mapaping velikost zůstává vždy malá.

Příklad sekundárního indexu

Pojďme si vysvětlit sekundární indexování na příkladu indexu databáze. V databázi bankovních účtů jsou data uložena postupně podle acc_no, ale můžete chtít najít všechny účty v konkrétní pobočce banky ABC.

Zde můžete mít sekundární index pro každý vyhledávací klíč. Záznam indexu odkazuje na sektor, který obsahuje ukazatele na všechny záznamy s danou hodnotou vyhledávacího klíče.

Sekundární index v DBMS

Clustering Index v DBMS

V klastrovaném indexu jsou v indexu uloženy samotné záznamy, nikoli ukazatele. Někdy je index vytvořen na sloupcích, které nejsou primárním klíčem, což nemusí být pro každý záznam jedinečné. V takové situaci můžete seskupit dva nebo více sloupců, abyste získali jedinečné hodnoty, a vytvořit index, který se nazývá klastrovaný index. To vám také pomůže rychleji identifikovat záznam.

Příklad: Předpokládejme, že společnost přijala mnoho zaměstnanců do různých oddělení. V tomto případě by měl být vytvořen shlukovací index pro všechny zaměstnance, kteří patří do stejného oddělení.

Jsou považovány za jeden klastr a index ukazuje na klastr jako celek. Zde je Department_no nejedinečný klíč.

Co je to víceúrovňový index?

Víceúrovňové indexování se vytváří, když se primární index nevejde do paměti. U tohoto typu indexování můžete snížit počet přístupů na disk pro dosažení jakéhokoli záznamu. Záznamy jsou uchovávány na disku jako sekvenční soubor a nad tímto souborem se vytvoří řídký index.

Víceúrovňový index v DBMS

Index B-stromu

B-stromový index je nejrozšířenější datová struktura pro stromové indexování v systémech pro správu databází. Jedná se o víceúrovňový formát stromového indexování, který využívá vyvážené… binární vyhledávací stromyVšechny koncové uzly B-stromu obsahují skutečné ukazatele na data.

Navíc jsou všechny koncové uzly propojeny linkovaným seznamem, což umožňuje B-stromu podporovat náhodný i sekvenční přístup.

Index B-stromu v DBMS

  • Listové uzly musí mít 2 až 4 hodnoty.
  • Každá cesta od kořene k listu je většinou stejně dlouhá.
  • Nelistové uzly mají kromě kořenového uzlu 3 až 5 podřízených uzlů.
  • Každý uzel, který není kořenem ani listem, má mezi n/2 a n potomky.

Kde dominují vyhledávání s přesnou shodou a skenování rozsahu je vzácné, hashování může být rychlejší alternativou k indexu B-stromu.

Výhody indexování

Důležité výhody indexování jsou:

  • Pomáhá to snížit celkový počet I/O operací potřebných k načtení dat, takže není nutné přistupovat k řádku přímo z tabulky.
  • Nabízí uživatelům rychlejší vyhledávání a načítání dat.
  • Může to zmenšit tabulkový prostor, protože není nutné ukládat ROWID do indexu pro každý propojený řádek.
  • Data v koncových uzlech jsou již seřazena podle hodnoty klíče.

Nevýhody indexování

Mezi důležité nevýhody indexování patří:

  • Pro provedení indexování potřebujete primární klíč v tabulce s jedinečnou hodnotou.
  • Nelze vytvořit další index na datech, která jsou již indexově uspořádána stejným způsobem.
  • Nemáte povoleno rozdělovat tabulku uspořádanou podle indexu.
  • Indexování snižuje výkon v dotazech INSERT, DELETE a UPDATE.

Nejčastější dotazy

Primární index se vytváří na základě pole, podle kterého je soubor seřazen, obvykle na základě primárního klíče. Sekundární index se vytváří na základě jiného pole, takže k dosažení každého odpovídajícího záznamu potřebuje segmenty (buckety).

B-strom zůstává vyvážený, takže každé vyhledávání vyžaduje podobně malý počet čtení z disku a jeho propojené listy podporují skenování rozsahu. Díky tomu je silný jak pro bodové, tak pro rozsahové dotazy.

Každé vložení, aktualizace a odstranění musí také udržovat každý index. Více indexů sice urychluje čtení, ale zvyšuje režii zápisu a úložiště, takže by měly být vytvářeny pouze tam, kde z toho dotazy skutečně profitují.

Poradci pro indexy s využitím umělé inteligence studují pracovní zátěž dotazů a doporučují indexy, které by nejvíce snížily náklady, a zároveň označují stávající indexy, které se nikdy nepoužívají a pouze zvyšují režijní náklady.

Klastrovaný index ukládá samotné řádky v pořadí podle indexu, takže tabulka může mít pouze jeden řádek. Neklastrovaný index obsahuje ukazatele na řádky, takže tabulka jich může mít několik.

Shrňte tento příspěvek takto: