Indeksiranje u DBMS-u: Što je, vrste indeksa s PRIMJERIMA

⚡ Pametni sažetak

Indeksiranje u bazi podataka je tehnika strukture podataka koja brzo dohvaća zapise pomoću mapeping ključ pretraživanja za adresu diska njegovog zapisa. Primarno, sekundarno, klasteriranje, višerazinsko i B-stablo indeksiraju svaki prostor, brzinu i održavanje drugačije.

  • 🗂️ Osnovna ideja: Indeks je mala tablica s dva stupca koja uparuje ključ s pokazivačem na blok diska zapisa.
  • 📇 Primarni indeks: Uređena datoteka na ključu, podijeljena na guste i rijetke varijante.
  • 🔎 Gusto naspram rijetkog: Gusti indeks pohranjuje unos po ključu; rijetki indeks pohranjuje manji broj unosa radi uštede prostora.
  • 🏷️ Sekundarni indeks: Izgrađen na polju koje nije redoslijed, koristi spremnike za dosezanje svakog odgovarajućeg zapisa.
  • 📚 ClusterIndeks: Grupira retke koji dijele nejedinstveni ključ u jedan klaster.
  • ???? Indeks B-stabla: Uravnoteženo višerazinsko stablo čiji povezani listovi podržavaju slučajni i sekvencijalni pristup.
  • ⚖️ Kompromis: Indeksi ubrzavaju čitanje, ali usporavaju umetanje, ažuriranje i brisanje te troše dodatni prostor.

Indeksiranje u bazi podataka

Što je indeksiranje?

Indeksiranje je tehnika strukture podataka koja vam omogućuje brzo dohvaćanje zapisa iz datoteke baze podataka. Indeks je mala tablica koja ima samo dva stupca. Prvi stupac sadrži kopiju primarnog ili kandidatskog ključa tablice. Drugi stupac sadrži skup upućuje koji sadrži adresu bloka diska gdje je pohranjena ta specifična ključna vrijednost.

Indeks:

  • Prima ključ za pretraživanje kao ulaz.
  • Učinkovito vraća zbirku podudarnih zapisa.

Bez indeksa, baza podataka mora skenirati svaki redak kako bi odgovorila na upit. S indeksom, skače izravno na odgovarajući blok, zbog čega odabrana vrsta indeksa ima veliki utjecaj na performanse.

Vrste indeksiranja u DBMS-u

Vrsta indeksa u bazi podataka
Vrsta indeksa u bazi podataka

Indeksiranje u bazi podataka definirano je na temelju njezinih atributa indeksiranja. Dvije glavne vrste metoda indeksiranja su:

  • Primarno indeksiranje
  • Sekundarno indeksiranje

Primarni indeks u DBMS-u

Primarni indeks je uređena datoteka fiksne duljine s dva polja. Prvo polje je isto što i primarni ključ, a drugo polje pokazuje na taj specifični blok podataka. U primarnom indeksu uvijek postoji odnos jedan-na-jedan između unosa u tablici indeksa.

Primarni indeks je također dalje podijeljen u dvije vrste:

  • Gusti indeks
  • Rijetki indeks

Gusti indeks

U gustom indeksu, zapis se stvara za svaku vrijednost ključa pretraživanja u bazi podataka. To vam pomaže brže pretraživanje, ali zahtijeva više prostora za pohranu zapisa indeksa. U ovoj metodi, zapisi sadrže vrijednost ključa pretraživanja i pokazuju na stvarni zapis na disku.

Gusti indeks u DBMS-u

Rijetki indeks

Rijetki indeks je indeksni zapis koji se pojavljuje samo za neke vrijednosti u datoteci. Rijetki indeks pomaže vam u rješavanju problema gustog indeksiranja u DBMSU ovoj tehnici, niz indeksnih stupaca pohranjuje istu adresu bloka podataka, a kada je potrebno dohvatiti podatke, dohvaća se ta adresa bloka.

Rijetki indeks pohranjuje indeksne zapise samo za neke vrijednosti ključeva za pretraživanje. Potrebno mu je manje prostora i manje troškova održavanja za umetanje i brisanje, ali je sporiji od gustog indeksa za lociranje zapisa.

U nastavku je primjer rijetkog indeksa baze podataka.

Rijetki indeks u DBMS-u

Gusti indeks vs. rijetki indeks

Dvije primarne varijante indeksa imaju suprotne kompromise, sažete u nastavku.

Aspekt Gusti indeks Rijetki indeks
Prijave Jedan po ključu za pretraživanje Jedan po bloku
Prostor više Less
Brzina pretraživanja Brže sporiji
održavanje Viši Spustite

Sekundarni indeks u DBMS-u

Sekundarni indeks u DBMS-u može se generirati poljem koje ima jedinstvenu vrijednost za svaki zapis i trebalo bi biti kandidat za ključ. Također je poznat kao indeks bez klasteriranja.

Ova tehnika indeksiranja baze podataka na dvije razine koristi se za smanjenje mapeping veličina prve razine. Za prvu razinu odabran je veliki raspon brojeva, tako da kartaping veličina uvijek ostaje mala.

Primjer sekundarnog indeksa

Razumijemo sekundarno indeksiranje na primjeru indeksa baze podataka. U bazi podataka bankovnih računa, podaci se pohranjuju sekvencijalno prema acc_no, ali možda želite pronaći sve račune u određenoj poslovnici ABC banke.

Ovdje možete imati sekundarni indeks za svaki ključ pretraživanja. Zapis indeksa pokazuje na spremnik koji sadrži pokazivače na sve zapise s tom specifičnom vrijednošću ključa pretraživanja.

Sekundarni indeks u DBMS-u

ClusterIndeksiranje u DBMS-u

U klasteriranom indeksu, sami zapisi su pohranjeni u indeksu, a ne pokazivači. Ponekad se indeks stvara na stupcima koji nisu primarni ključ, a koji možda nisu jedinstveni za svaki zapis. U takvoj situaciji možete grupirati dva ili više stupaca kako biste dobili jedinstvene vrijednosti i stvorili indeks, koji se naziva klasterirani indeks. To vam također pomaže da brže identificirate zapis.

Primjer: Pretpostavimo da je tvrtka zaposlila mnogo zaposlenika u raznim odjelima. U tom slučaju, indeks klasteriranja treba stvoriti za sve zaposlenike koji pripadaju istom odjelu.

Smatraju se jednim klasterom, a indeks pokazuje na klaster kao cjelinu. Ovdje je Department_no nejedinstveni ključ.

Što je višerazinski indeks?

Višerazinsko indeksiranje stvara se kada primarni indeks ne stane u memoriju. Kod ove vrste metode indeksiranja možete smanjiti broj pristupa disku kako biste došli do bilo kojeg zapisa. Zapisi se čuvaju na disku kao sekvencijalna datoteka, a na vrhu te datoteke stvara se rijetki indeks.

Višerazinski indeks u DBMS-u

Indeks B-stabla

B-stablo indeks je najčešće korištena struktura podataka za indeksiranje temeljeno na stablu u DBMS-u. To je višerazinski format indeksiranja temeljenog na stablu koji koristi uravnoteženo stabla binarnog pretraživanjaSvi listovi B-stabla sadrže stvarne pokazivače podataka.

Štoviše, svi listovi čvorovi su međusobno povezani povezanom listom, što omogućuje B-stablu da podržava i slučajni i sekvencijalni pristup.

B-stablo indeks u DBMS-u

  • Listni čvorovi moraju imati između 2 i 4 vrijednosti.
  • Svaki put od korijena do lista je uglavnom jednake duljine.
  • Ne-listni čvorovi, osim korijenskog čvora, imaju između 3 i 5 podređenih čvorova.
  • Svaki čvor koji nije korijen ili list ima između n/2 i n djece.

Gdje dominiraju pretraživanja s točnim podudaranjem, a skeniranje raspona je rijetko, raspršivanja može biti brža alternativa indeksu B-stabla.

Prednosti indeksiranja

Važne prednosti indeksiranja su:

  • Pomaže u smanjenju ukupnog broja I/O operacija potrebnih za dohvaćanje podataka, tako da ne morate pristupati retku izravno iz tablice.
  • Omogućuje korisnicima brže pretraživanje i dohvaćanje podataka.
  • Može smanjiti prostor u tablici jer ne morate pohranjivati ​​ROWID u indeksu za svaki povezani redak.
  • Podaci u listovima već su sortirani prema vrijednosti ključa.

Nedostaci indeksiranja

Važni nedostaci indeksiranja su:

  • Za izvođenje indeksiranja potreban vam je primarni ključ u tablici s jedinstvenom vrijednošću.
  • Ne možete izgraditi drugi indeks na podacima koji su već organizirani na isti način.
  • Nije vam dopušteno particionirati indeksno organiziranu tablicu.
  • Indeksiranje smanjuje performanse u upitima INSERT, DELETE i UPDATE.

Pitanja i odgovori

Primarni indeks se gradi na polju po kojem je datoteka sortirana, obično na primarnom ključu. Sekundarni indeks se gradi na drugom polju, pa su mu potrebni segmenti (buckets) da bi dosegao svaki odgovarajući zapis.

B-stablo ostaje uravnoteženo, tako da svako pretraživanje zahtijeva sličan mali broj čitanja diska, a povezani listovi podržavaju skeniranje raspona. To ga čini jakim i za upite točaka i za upite raspona.

Svako umetanje, ažuriranje i brisanje mora održavati i svaki indeks. Više indeksa ubrzava čitanje, ali dodaje opterećenje pisanja i prostor za pohranu, pa bi ih trebalo stvarati samo tamo gdje upiti zapravo imaju koristi.

Savjetnici za AI indekse proučavaju opterećenje upita i preporučuju indekse koji bi najviše smanjili troškove, istovremeno označavajući postojeće indekse koji se nikada ne koriste i samo povećavaju opterećenje.

Klasterirani indeks pohranjuje same retke po indeksnom redoslijedu, tako da tablica može imati samo jedan. Neklasterirani indeks sadrži pokazivače na retke, tako da tablica može imati nekoliko njih.

Sažmite ovu objavu uz: