Indekseerimine DBMS-is: mis on, NÄIDETEGA indeksite tüübid

⚡ Nutikas kokkuvõte

Andmebaasis indekseerimine on andmestruktuuri tehnika, mis otsib kirjeid kiiresti kaardi abil.ping otsinguvõti oma kirje kettaaadressi jaoks. Primaarne, sekundaarne, klastrite moodustamise, mitmetasandiline ja B-puu indekseerib iga kauplemisruumi, kiiruse ja hoolduse erinevalt.

  • 🗂️ Põhiidee: Indeks on väike kaheveeruline tabel, mis seob võtme osutiga kirje kettaplokile.
  • 📇 Esmane indeks: Võtmel olev järjestatud fail, mis on jagatud tihedateks ja hõredateks variantideks.
  • 🔎 Tihe vs hõre: Tihe indeks salvestab iga võtme kohta ühe kirje; hõre indeks salvestab ruumi kokkuhoiuks vähem kirjeid.
  • ???? ️ Teisene indeks: See on üles ehitatud mittejärjestatavale väljale ja kasutab iga sobiva kirjeni jõudmiseks ämbrite süsteemi.
  • 📚 Clustering-indeks: Rühmitab read, millel on ühine mitteunikaalne võti, ühte klastrisse.
  • 🌳 B-puu indeks: Tasakaalustatud mitmetasandiline puu, mille omavahel seotud lehesõlmed toetavad juhuslikku ja järjestikust juurdepääsu.
  • 🇧🇷 Kompromiss: Indeksid loevad kiiresti, aga lisamine, värskendamine ja kustutamine on aeglased ning tarbivad lisaruumi.

Indekseerimine andmebaasis

Mis on indekseerimine?

Indekseerimine on andmestruktuuri tehnika, mis võimaldab teil andmebaasifailist kiiresti kirjeid hankida. Indeks on väike tabel, millel on ainult kaks veergu. Esimene veerg sisaldab tabeli primaar- või kandidaatvõtme koopiat. Teine veerg sisaldab komplekti osutid mis hoiab kettaploki aadressi, kuhu see konkreetne võtmeväärtus on salvestatud.

Indeks:

  • Võtab sisendiks otsinguvõtme.
  • Tagastab tõhusalt sobivate kirjete kogu.

Ilma indeksi puudumisel peab andmebaas päringule vastamiseks skannima iga rida. Indeksi olemasolul hüppab see otse vastava ploki juurde, mistõttu valitud indeksitüübil on jõudlusele suur mõju.

DBMS-i indekseerimise tüübid

Andmebaasis olevate indeksite tüübid
Andmebaasis olevate indeksite tüübid

Andmebaasi indekseerimine defineeritakse selle indekseerimisatribuutide põhjal. Indekseerimismeetodeid on kaks peamist:

  • Esmane indekseerimine
  • Sekundaarne indekseerimine

DBMS-i esmane indeks

Primaarindeks on fikseeritud pikkusega järjestatud fail, millel on kaks välja. Esimene väli on sama mis primaarvõti ja teine ​​väli osutab sellele konkreetsele andmeplokile. Primaarindeksis on indeksitabeli kirjete vahel alati üks-ühele seos.

Esmane indeks jaguneb samuti kahte tüüpi:

  • Tihe indeks
  • Hõreda indeks

Tihe indeks

Tihedas indeksis luuakse iga andmebaasis oleva otsinguvõtme väärtuse kohta kirje. See aitab otsida kiiremini, kuid vajab indeksikirjete salvestamiseks rohkem ruumi. Selle meetodi puhul sisaldavad kirjed otsinguvõtme väärtust ja osutavad kettal olevale tegelikule kirjele.

Tihe indeks andmebaasihaldussüsteemis

Hõreda indeks

Hõred indeksid on indeksikirjed, mis kuvatakse ainult osade faili väärtuste puhul. Hõredad indeksid aitavad lahendada tiheda indekseerimise probleeme. DB-süsteemidSelle meetodi puhul salvestab indeksveergude vahemik sama andmeploki aadressi ja kui andmeid on vaja hankida, siis see ploki aadress hangitakse.

Hõre indeks salvestab indeksikirjeid ainult mõne otsinguvõtme väärtuse jaoks. See vajab lisamiste ja kustutamiste jaoks vähem ruumi ja vähem hoolduskulusid, kuid on kirjete leidmisel aeglasem kui tihe indeks.

Allpool on näide hõreda indeksi andmebaasi indeksi kohta.

Hõredad indeksid andmebaasisüsteemides

Tihe indeks vs hõre indeks

Kaks peamist indeksivarianti teevad vastandlikke kompromisse, mis on kokku võetud allpool.

Aspekt Tihe indeks Hõreda indeks
Sissekanded Üks otsinguvõtme kohta Üks ploki kohta
Ruum rohkem Less
Otsingu kiirus Kiiremini Aeglasemalt
Hooldus Kõrgem Langetage

Teisene indeks DBMS-is

Andmebaasihaldussüsteemis saab sekundaarse indeksi genereerida välja abil, millel on iga kirje jaoks unikaalne väärtus ja see peaks olema kandidaatvõti. Seda tuntakse ka mitteklasterdava indeksina.

Seda kahetasemelist andmebaasi indekseerimise tehnikat kasutatakse kaardi vähendamiseksping esimese taseme suurus. Esimese taseme jaoks on valitud suur numbrite vahemik, seega kaartping suurus jääb alati väikeseks.

Teisese indeksi näide

Vaatleme teisest indekseerimist andmebaasi indeksi näite abil. Pangakontode andmebaasis salvestatakse andmed järjestikku konto_numbri järgi, kuid võite soovida leida kõik kontod ABC panga kindlas filiaalis.

Siin saab iga otsinguvõtme jaoks luua teisese indeksi. Indeksikirje osutab ämbrile, mis sisaldab viiteid kõigile selle konkreetse otsinguvõtme väärtusega kirjetele.

Teisene indeks andmebaasihaldussüsteemis

Clusterindekseerimine DBMS-is

Klasterdatud indeksis salvestatakse indeksisse kirjed ise, mitte pointerid. Mõnikord luuakse indeks mitte-primaarvõtme veergudele, mis ei pruugi iga kirje jaoks unikaalsed olla. Sellises olukorras saate grupeerida kaks või enam veergu, et saada unikaalsed väärtused ja luua indeks, mida nimetatakse klastritud indeksiks. See aitab teil ka kirjet kiiremini tuvastada.

Näide: Oletame, et ettevõte on värvanud palju töötajaid erinevatesse osakondadesse. Sellisel juhul tuleks luua klasterdusindeks kõigi samasse osakonda kuuluvate töötajate jaoks.

Neid käsitletakse ühe klastrina ja indeks osutab klastrile tervikuna. Siin on Department_no mitte-unikaalne võti.

Mis on mitmetasandiline indeks?

Mitmetasandiline indekseerimine luuakse siis, kui primaarne indeks mällu ei mahu. Seda tüüpi indekseerimismeetodi puhul saab vähendada kettale juurdepääsude arvu mis tahes kirje juurde pääsemiseks. Kirjed salvestatakse kettal järjestikuse failina ja selle faili peale luuakse hõre indeks.

Mitmetasandiline indeks andmebaasihaldussüsteemis

B-puu indeks

B-puu indeks on andmebaasisüsteemides puupõhise indekseerimise jaoks kõige laialdasemalt kasutatav andmestruktuur. See on mitmetasandiline puupõhise indekseerimise vorming, mis kasutab tasakaalustatud binaarsed otsingupuudKõik B-puu lehesõlmed hoiavad tegelikke andmeviiteid.

Lisaks on kõik lehesõlmed omavahel seotud lingitud loendiga, mis võimaldab B-puul toetada nii juhuslikku kui ka järjestikust juurdepääsu.

B-puu indeks andmebaasihaldussüsteemis

  • Lehesõlmedel peab olema 2 kuni 4 väärtust.
  • Iga tee juurest leheni on enamasti võrdse pikkusega.
  • Lisaks juursõlmele on mitte-lehtsõlmedel 3–5 alamsõlme.
  • Igal sõlmel, mis ei ole juur ega leht, on n/2 kuni n last.

Kus domineerivad täpse vaste otsingud ja vahemiku skaneeringud on haruldased, räsimine võib olla kiirem alternatiiv B-puu indeksile.

Indekseerimise eelised

Indekseerimise olulised eelised on järgmised:

  • See aitab vähendada andmete hankimiseks vajalike I/O-operatsioonide koguarvu, seega ei pea te reale otse tabelist juurde pääsema.
  • See pakub kasutajatele kiiremat andmete otsimist ja hankimist.
  • See võib vähendada tabeliruumi, kuna te ei pea iga lingitud rea ROWID-d indeksisse salvestama.
  • Lehesõlmede andmed on juba võtme väärtuse järgi järjestatud.

Indekseerimise puudused

Indekseerimise peamised puudused on järgmised:

  • Indekseerimiseks vajate tabelis unikaalse väärtusega primaarvõtit.
  • Te ei saa luua uut indeksit andmete põhjal, mis on juba samal viisil indekseeritud.
  • Teil ei ole lubatud indeksiga organiseeritud tabelit partitsioonideks jagada.
  • Indekseerimine vähendab jõudlust INSERT, DELETE ja UPDATE päringutes.

KKK

Primaarne indeks luuakse välja põhjal, mille järgi fail on järjestatud (tavaliselt primaarvõti). Teisene indeks luuakse teistsuguse välja põhjal, seega vajab see iga sobiva kirjeni jõudmiseks ämbrite süsteemi (buckets).

B-puu püsib tasakaalus, seega iga otsing nõuab sarnaselt väikest arvu ketta lugemisi ja selle lingitud lehed toetavad vahemiku skaneerimist. See muudab selle tugevaks nii punkt- kui ka vahemiku päringute jaoks.

Iga sisestamine, värskendamine ja kustutamine peab säilitama ka iga indeksi. Rohkem indekseid kiirendab lugemist, kuid lisab kirjutamiskoormust ja salvestusruumi, seega tuleks need luua ainult seal, kus päringud tegelikult kasu saavad.

Tehisintellekti indeksinõustajad uurivad päringute töökoormust ja soovitavad indekseid, mis vähendaksid kõige rohkem kulusid, märkides samal ajal ära olemasolevad indeksid, mida kunagi ei kasutata ja mis ainult lisavad üldkulu.

Klastritesse koondatud indeks salvestab read ise indeksi järjekorras, seega tabelis saab olla ainult üks rida. Klastritesse koondamata indeks hoiab ridade pointereid, seega tabelis võib neid olla mitu.

Võta see postitus kokku järgmiselt: