logo

Indexovanie v databázach – sada 1

Indexovanie zlepšuje výkon databázy minimalizovaním počtu návštev disku potrebných na splnenie dotazu. Ide o techniku ​​dátovej štruktúry, ktorá sa používa na vyhľadávanie a rýchly prístup k údajom v databázach. Na generovanie indexov sa používa niekoľko databázových polí. Hlavný kľúč alebo kandidátsky kľúč tabuľky je duplikovaný v prvom stĺpci, ktorým je vyhľadávací kľúč. Na urýchlenie získavania údajov sa hodnoty tiež uchovávajú v zoradenom poradí. Je potrebné zdôrazniť, že triedenie údajov nie je potrebné. Druhý stĺpec je odkaz na údaje alebo ukazovateľ, ktorý obsahuje množinu ukazovateľov obsahujúcich adresu bloku disku, kde možno nájsť konkrétnu hodnotu kľúča.

java rozdeliť reťazec podľa oddeľovača

Štruktúra indexu v databáze

Atribúty indexovania

  • Typy prístupu: Vzťahuje sa to na typ prístupu, ako je vyhľadávanie založené na hodnote, prístup k rozsahu atď.
  • Čas prístupu: Vzťahuje sa na čas potrebný na nájdenie konkrétneho dátového prvku alebo súboru prvkov.
  • Čas vloženia: Vzťahuje sa na čas potrebný na nájdenie vhodného priestoru a vloženie nových údajov.
  • Čas odstránenia: Čas potrebný na nájdenie položky a jej odstránenie, ako aj na aktualizáciu štruktúry indexu.
  • Priestor nad hlavou: Vzťahuje sa na dodatočný priestor požadovaný indexom.

Štruktúra indexu v databáze



Vo všeobecnosti existujú dva typy mechanizmov organizácie súborov, po ktorých nasledujú metódy indexovania na ukladanie údajov:

Usporiadanie sekvenčných súborov alebo usporiadaný indexový súbor

V tomto sú indexy založené na zoradenom poradí hodnôt. Vo všeobecnosti ide o rýchly a tradičnejší typ skladovacieho mechanizmu. Tieto usporiadané alebo sekvenčné organizácie súborov môžu uchovávať údaje v hustom alebo riedkom formáte.

  • Hustý index
    • Pre každú hodnotu kľúča vyhľadávania v dátovom súbore existuje indexový záznam.
    • Tento záznam obsahuje kľúč vyhľadávania a tiež odkaz na prvý údajový záznam s touto hodnotou kľúča vyhľadávania.

Hustý index

  • Riedky index
    • Indexový záznam sa zobrazí len pre niekoľko položiek v dátovom súbore. Každá položka ukazuje na blok, ako je znázornené.
    • Ak chcete nájsť záznam, nájdeme záznam indexu s najväčšou hodnotou kľúča vyhľadávania menšou alebo rovnou hodnote kľúča vyhľadávania, ktorú hľadáme.
    • Začneme od toho záznamu, na ktorý ukazuje indexový záznam, a pokračujeme spolu s ukazovateľmi v súbore (teda postupne), kým nenájdeme požadovaný záznam.
    • Počet požadovaných prístupov=log₂(n)+1, (tu n=počet blokov získaných indexovým súborom)

Riedky index

Organizácia hash súboru

Indexy sú založené na hodnotách, ktoré sú rovnomerne rozložené v rámci rozsahu segmentov. Segmenty, ku ktorým je priradená hodnota, sú určené funkciou nazývanou hašovacia funkcia. Primárne existujú tri spôsoby indexovania:

  • Klastrované indexovanie : Ak sú v rovnakom súbore uložené viac ako dva záznamy, tento typ ukladania sa nazýva indexovanie klastrov. Použitím klastrovej indexácie môžeme znížiť náklady na vyhľadávanie z dôvodu, že viacero záznamov súvisiacich s tou istou vecou je uložených na jednom mieste a tiež umožňuje časté spájanie viac ako dvoch tabuliek (záznamov).
    Index klastrovania je definovaný v súbore s usporiadanými údajmi. Dátový súbor je usporiadaný v nekľúčovom poli. V niektorých prípadoch sa index vytvára na neprimárnych stĺpcoch kľúča, ktoré nemusia byť jedinečné pre každý záznam. V takýchto prípadoch, aby sme záznamy rýchlejšie identifikovali, zoskupíme dva alebo viac stĺpcov, aby sme získali jedinečné hodnoty a vytvorili z nich index. Táto metóda je známa ako index klastrovania. V podstate sa záznamy s podobnými vlastnosťami zoskupujú a vytvárajú sa indexy pre tieto zoskupenia.
    Študenti, ktorí študujú každý semester, sú napríklad zoskupení. Študenti prvého semestra, študenti druhého semestra, študenti tretieho semestra atď. sú kategorizovaní.

Klastrované indexovanie

  • Primárne indexovanie: Ide o typ klastrového indexovania, pri ktorom sa údaje triedia podľa vyhľadávacieho kľúča a na vytvorenie indexu sa používa primárny kľúč databázovej tabuľky. Je to predvolený formát indexovania tam, kde vyvoláva sekvenčná organizácia súborov . Keďže primárne kľúče sú jedinečné a sú uložené triedeným spôsobom, výkon operácie vyhľadávania je pomerne efektívny.
  • Neklastrované alebo sekundárne indexovanie : Index bez klastrov nám len hovorí, kde sa údaje nachádzajú, t. j. poskytuje nám zoznam virtuálnych ukazovateľov alebo odkazov na miesto, kde sú údaje skutočne uložené. Údaje nie sú fyzicky uložené v poradí podľa indexu. Namiesto toho sú údaje prítomné v listových uzloch. Pre napr. stránka s obsahom knihy. Každý záznam nám dáva číslo strany alebo umiestnenie uložených informácií. Skutočné údaje tu (informácie na každej strane knihy) nie sú usporiadané, ale máme usporiadaný odkaz (stránka s obsahom), kde sa údaje skutočne nachádzajú. V indexe bez klastrov môžeme mať iba husté usporiadanie, pretože riedke usporiadanie nie je možné, pretože údaje nie sú podľa toho fyzicky usporiadané.
    Vyžaduje si to viac času v porovnaní s klastrovaným indexom, pretože na extrahovanie údajov ďalším sledovaním ukazovateľa sa vykoná určité množstvo práce navyše. V prípade klastrovaného indexu sa údaje nachádzajú priamo pred indexom.
Neklastrované indexovanie

Neklastrované indexovanie

rok bol vynájdený počítač
  • Viacúrovňové indexovanie: S rastom veľkosti databázy rastú aj indexy. Keďže index je uložený v hlavnej pamäti, jednoúrovňový index môže byť príliš veľký na uloženie s viacerými prístupmi na disk. Viacúrovňové indexovanie rozdeľuje hlavný blok na rôzne menšie bloky, takže to isté možno uložiť do jedného bloku. Vonkajšie bloky sú rozdelené na vnútorné bloky, ktoré sú zase nasmerované na dátové bloky. To možno ľahko uložiť do hlavnej pamäte s menšou réžiou.

Viacúrovňové indexovanie

Výhody indexovania

  • Vylepšený výkon dopytov: Indexovanie umožňuje rýchlejšie získavanie údajov z databázy. Databáza môže rýchlo objaviť riadky, ktoré sa zhodujú so špecifickou hodnotou alebo kolekciou hodnôt vygenerovaním indexu v stĺpci, čím sa minimalizuje množstvo času potrebného na vykonanie dotazu.
  • Efektívny prístup k údajom: Indexovanie môže zvýšiť efektivitu prístupu k údajom znížením množstva diskových I/O potrebných na získanie údajov. Databáza môže udržiavať dátové stránky pre často navštevované stĺpce v pamäti vygenerovaním indexu pre tieto stĺpce, čím sa zníži požiadavka na čítanie z disku.
  • Optimalizované triedenie údajov: Indexovanie môže tiež zlepšiť výkon operácií triedenia. Vytvorením indexu stĺpcov používaných na triedenie sa databáza môže vyhnúť triedeniu celej tabuľky a namiesto toho triediť iba príslušné riadky.
  • Konzistentný výkon údajov: Indexovanie môže pomôcť zabezpečiť, aby databáza fungovala konzistentne, aj keď množstvo údajov v databáze stúpa. Bez indexovania môže spustenie dopytov trvať dlhšie, pretože počet riadkov v tabuľke rastie, zatiaľ čo indexovanie si zachováva približne konzistentnú rýchlosť.
  • Zabezpečením, že sa do stĺpcov, ktoré boli indexované ako jedinečné, vkladajú iba jedinečné hodnoty, možno indexovanie využiť aj na zabezpečenie integrity údajov. Tým sa zabráni ukladaniu duplicitných údajov v databáze, čo by mohlo viesť k problémom pri vykonávaní dotazov alebo zostáv.

Celkovo indexovanie v databázach poskytuje významné výhody pre zlepšenie výkonu dotazov, efektívny prístup k údajom, optimalizované triedenie údajov, konzistentný výkon údajov a vynútenú integritu údajov.

Nevýhody indexovania

  • Indexovanie si vyžaduje viac úložného priestoru na uloženie štruktúry údajov indexu, čo môže zvýšiť celkovú veľkosť databázy.
  • Zvýšená réžia údržby databázy: Indexy sa musia udržiavať pri pridávaní, ničení alebo úprave údajov v tabuľke, čo môže zvýšiť réžiu údržby databázy.
  • Indexovanie môže znížiť výkon vkladania a aktualizácie, pretože štruktúra údajov indexu sa musí aktualizovať pri každej zmene údajov.
  • Výber indexu môže byť zložitý: Výber správnych indexov pre konkrétny dotaz alebo aplikáciu môže byť náročný a môže vyžadovať podrobné preskúmanie údajov a vzorcov prístupu.

Vlastnosti indexovania

  • Rozvoj dátových štruktúr, ako napr B-stromy alebo Najdôležitejšie stĺpce na indexovanie stĺpcov sa vyberajú podľa toho, ako často sa používajú, a podľa druhu dotazov, ktorým sú vystavené. The kardinalita možno vziať do úvahy selektivitu a jedinečnosť indexovacích stĺpcov.
  • Existuje niekoľko rôznych typov indexov používaných v databázach, vrátane primárnych, sekundárnych, klastrovaných a neklastrovaných indexov. Na základe konkrétnych potrieb databázového systému ponúka každá forma indexu výhody a nevýhody.
  • Aby databázový systém fungoval čo najlepšie, je potrebná pravidelná údržba indexu. Podľa zmien v údajoch a vzorcoch používania údržba zahŕňa vytváranie, aktualizáciu a odstraňovanie indexov.
  • Optimalizácia databázových dotazov zahŕňa indexovanie, ktoré je nevyhnutné. Optimalizátor dotazov využíva indexy na výber najlepšej stratégie vykonávania pre konkrétny dotaz na základe nákladov na prístup k údajom a selektivity indexovacích stĺpcov.
  • Databázy využívajú celý rad stratégií indexovania vrátane pokrytia indexov, skenovania iba indexu a čiastočných indexov. Tieto techniky maximalizujú využitie indexov pre konkrétne typy dotazov a prístup k údajom.
  • Keď sú v indexe uložené nesúvislé bloky údajov, môže to viesť k fragmentácii indexu, čo znižuje efektivitu indexu. Pravidelná údržba indexu, ako je defragmentácia a reorganizácia, sa môže znížiť fragmentácia .

Záver

Indexovanie je veľmi užitočná technika, ktorá pomáha pri optimalizácii času vyhľadávania databázy otázky. Tabuľka indexovania databázy pozostáva z vyhľadávacieho kľúča a ukazovateľ . Existujú štyri typy indexovania: primárne, sekundárne klastrovanie a viachodnotové indexovanie. Primárne indexovanie sa delí na dva typy, husté a riedke. Husté indexovanie sa používa, keď indexová tabuľka obsahuje záznamy pre každý kľúč vyhľadávania. Riedke indexovanie sa používa, keď indexová tabuľka nepoužíva kľúč vyhľadávania pre každý záznam. Použitie viacúrovňového indexovania Strom B+ . Hlavným účelom indexovania je poskytnúť lepší výkon pri získavaní údajov.

Časté otázky o indexovaní

Q.1: Čo je indexovanie v databázach?

odpoveď:

Indexovanie je v podstate technika, ktorá pomáha pri skrátení času vyhľadávania databázového dotazu alebo pomáha pri rýchlejšom prístupe k databáze.

Otázka 2: Aké sú príklady indexovacích databáz?

odpoveď:

Niektoré bežné príklady indexovacích databáz sú Web of Science, DOAJ (Adresár časopisov s otvoreným prístupom)

Ďalšie podrobnosti nájdete na Úvod do B+ Tree a Typy kľúčov v databáze článok.

char na reťazec java