Indeksering i DBMS: Hva er, typer indekser med EKSEMPLER

โšก Smart oppsummering

Indeksering i databaser er en datastrukturteknikk som henter poster raskt via kartlegging.ping en sรธkenรธkkel til diskadressen til posten. Primรฆr, sekundรฆr, klynge-, flernivรฅ- og B-treindekserer hver handelsplass, hastighet og vedlikehold forskjellig.

  • ๐Ÿ—‚๏ธ Kjerneide: En indeks er en liten tabell med to kolonner som kobler en nรธkkel med en peker til postens diskblokk.
  • ๐Ÿ“‡ Primรฆrindeks: En ordnet fil pรฅ nรธkkelen, delt inn i tette og spredte varianter.
  • ๐Ÿ”Ž Tett vs. sparsom: En tett indeks lagrer รฉn oppfรธring per nรธkkel; en sparsom indeks lagrer fรฆrre oppfรธringer for รฅ spare plass.
  • ๐Ÿท๏ธ Sekundรฆrindeks: Den er bygget pรฅ et ikke-ordnende felt, og bruker bรธtter for รฅ nรฅ alle samsvarende poster.
  • ๐Ÿ“š Clustering-indeks: Grupperer rader som deler en ikke-unik nรธkkel i รฉn klynge.
  • ???? B-treindeks: Et balansert flernivรฅtre der lenkede bladnoder stรธtter tilfeldig og sekvensiell tilgang.
  • ๐Ÿ‡ง๐Ÿ‡ท Avveining: Indekserer raskere lesing, men gjรธr innsettinger, oppdateringer og slettinger trege, og bruker ekstra plass.

Indeksering i databasen

Hva er indeksering?

Indeksering er en datastrukturteknikk som lar deg raskt hente poster fra en databasefil. En indeks er en liten tabell som bare har to kolonner. Den fรธrste kolonnen inneholder en kopi av primรฆrnรธkkelen eller kandidatnรธkkelen til en tabell. Den andre kolonnen inneholder et sett med pekere som inneholder adressen til diskblokken der den spesifikke nรธkkelverdien er lagret.

En indeks:

  • Tar en sรธkenรธkkel som input.
  • Returnerer effektivt en samling av samsvarende poster.

Uten en indeks mรฅ databasen skanne hver rad for รฅ svare pรฅ en spรธrring. Med en indeks hopper den rett til den samsvarende blokken, og det er derfor den valgte indekstypen har stor effekt pรฅ ytelsen.

Typer indeksering i DBMS

Type indekser i databasen
Type indekser i databasen

Indeksering i en database er definert basert pรฅ dens indekseringsattributter. De to hovedtypene av indekseringsmetoder er:

  • Primรฆr indeksering
  • Sekundรฆr indeksering

Primรฆrindeks i DBMS

En primรฆrindeks er en ordnet fil med fast lengde og to felt. Det fรธrste feltet er det samme som primรฆrnรธkkelen, og det andre feltet peker til den spesifikke datablokken. I primรฆrindeksen er det alltid en รฉn-til-รฉn-relasjon mellom oppfรธringene i indekstabellen.

Primรฆrindeksen er ogsรฅ videre delt inn i to typer:

  • Tett indeks
  • Sparsom indeks

Tett indeks

I en tett indeks opprettes en post for hver sรธkenรธkkelverdi i databasen. Dette hjelper deg med รฅ sรธke raskere, men trenger mer plass til รฅ lagre indeksposter. I denne metoden inneholder postene sรธkenรธkkelverdien og peker til den faktiske posten pรฅ disken.

Tett indeks i DBMS

Sparsom indeks

En sparsom indeks er en indekspost som bare vises for noen av verdiene i filen. Sparsom indeks hjelper deg med รฅ lรธse problemene med tett indeksering i DBMSI denne teknikken lagrer et omrรฅde med indekskolonner den samme datablokkadressen, og nรฅr data mรฅ hentes, hentes den blokkadressen.

En sparse-indeks lagrer indeksposter for bare noen sรธkenรธkkelverdier. Den trenger mindre plass og mindre vedlikeholdskostnader for innsettinger og slettinger, men den er tregere enn den tette indeksen for รฅ finne poster.

Nedenfor er et eksempel pรฅ en databaseindeks for en sparse-indeks.

Sparsom indeks i DBMS

Tett indeks vs. sparsom indeks

De to primรฆre indeksvariantene gjรธr motsatte avveininger, oppsummert nedenfor.

Aspekt Tett indeks Sparsom indeks
Innganger ร‰n per sรธkenรธkkel ร‰n per blokk
Rom Mer Less
Sรธkehastighet Raskere Langsommere
Vedlikehold hรธyere Senk

Sekundรฆrindeks i DBMS

Sekundรฆrindeksen i DBMS kan genereres av et felt som har en unik verdi for hver post, og den bรธr vรฆre en kandidatnรธkkel. Den er ogsรฅ kjent som en ikke-klyngeindeks.

Denne to-nivรฅ databaseindekseringsteknikken brukes til รฅ redusere kartetping stรธrrelsen pรฅ det fรธrste nivรฅet. For det fรธrste nivรฅet er et stort tallomrรฅde valgt, slik at kartetping stรธrrelsen forblir alltid liten.

Sekundรฆrindekseksempel

La oss forstรฅ sekundรฆrindeksering med et eksempel pรฅ en databaseindeks. I en bankkontodatabase lagres data sekvensielt etter kontonummer, men du vil kanskje finne alle kontoer i en bestemt filial av ABC bank.

Her kan du ha en sekundรฆr indeks for hver sรธkenรธkkel. Indeksposten peker til en bรธtte som inneholder pekere til alle postene med den spesifikke sรธkenรธkkelverdien.

Sekundรฆrindeks i DBMS

Clustering Index i DBMS

I en klynget indeks lagres selve postene i indeksen, ikke pekere. Noen ganger opprettes indeksen pรฅ ikke-primรฆre nรธkkelkolonner, som kanskje ikke er unike for hver post. I en slik situasjon kan du gruppere to eller flere kolonner for รฅ fรฅ unike verdier og opprette en indeks, som kalles en klynget indeks. Dette hjelper deg ogsรฅ med รฅ identifisere posten raskere.

Eksempel: anta at et selskap har rekruttert mange ansatte i ulike avdelinger. I dette tilfellet bรธr det opprettes en klyngeindeks for alle ansatte som tilhรธrer samme avdeling.

De regnes som รฉn enkelt klynge, og indeksen peker pรฅ klyngen som helhet. Her er avdelingsnr. en ikke-unik nรธkkel.

Hva er en flernivรฅindeks?

Flernivรฅindeksering opprettes nรฅr en primรฆrindeks ikke fรฅr plass i minnet. Med denne typen indekseringsmetode kan du redusere antall disktilganger for รฅ nรฅ en hvilken som helst post. Postene lagres pรฅ en disk som en sekvensiell fil, og en sparsom indeks opprettes oppรฅ den filen.

Flernivรฅindeks i DBMS

B-treindeks

B-treindeksen er den mest brukte datastrukturen for trebasert indeksering i DBMS. Det er et flernivรฅformat for trebasert indeksering som bruker balansert binรฆre sรธketrรฆrAlle bladnodene i B-treet inneholder de faktiske datapekerne.

Dessuten er alle bladnoder sammenkoblet med en lenket liste, som lar et B-tre stรธtte bรฅde tilfeldig og sekvensiell tilgang.

B-treindeks i DBMS

  • Bladnoder mรฅ ha mellom 2 og 4 verdier.
  • Hver vei fra roten til et blad er stort sett like lang.
  • Ikke-bladnoder bortsett fra rotnoden har mellom 3 og 5 undernoder.
  • Hver node som ikke er en rot eller et blad har mellom n/2 og n barn.

Der oppslag med eksakt samsvar dominerer og rekkeviddeskanninger er sjeldne, hashing kan vรฆre et raskere alternativ til en B-treindeks.

Fordeler med indeksering

De viktigste fordelene med indeksering er:

  • Det bidrar til รฅ redusere det totale antallet I/O-operasjoner som trengs for รฅ hente data, slik at du ikke trenger รฅ fรฅ tilgang til en rad direkte fra tabellen.
  • Det tilbyr raskere sรธk og henting av data for brukere.
  • Det kan redusere tabellplass, fordi du ikke trenger รฅ lagre ROWID-en i indeksen for hver koblede rad.
  • Data i bladnodene er allerede ordnet etter verdien til nรธkkelen.

Ulemper med indeksering

De viktigste ulempene med indeksering er:

  • For รฅ utfรธre indeksering trenger du en primรฆrnรธkkel pรฅ tabellen med en unik verdi.
  • Du kan ikke bygge en annen indeks pรฅ data som allerede er indeksorganisert pรฅ samme mรฅte.
  • Du har ikke lov til รฅ partisjonere en indeksorganisert tabell.
  • Indeksering reduserer ytelsen i INSERT-, DELETE- og UPDATE-spรธrringer.

Spรธrsmรฅl og svar

En primรฆrindeks er bygget pรฅ feltet filen er sortert etter, vanligvis primรฆrnรธkkelen. En sekundรฆrindeks er bygget pรฅ et annet felt, sรฅ den trenger bรธtter for รฅ nรฅ alle samsvarende poster.

Et B-tre forblir balansert, sรฅ hvert oppslag tar et tilsvarende lite antall disklesninger, og de lenkede bladene stรธtter rekkeviddeskanninger. Dette gjรธr det sterkt for bรฅde punkt- og rekkeviddespรธrringer.

Hver innsetting, oppdatering og sletting mรฅ ogsรฅ vedlikeholde hver indeks. Flere indekser รธker lesingens hastighet, men legger til skriveoverhead og lagringsplass, sรฅ de bรธr bare opprettes der spรธrringer faktisk drar nytte av det.

AI-indeksrรฅdgivere studerer spรธrrebelastningen og anbefaler indekser som vil kutte mest penger, samtidig som de flagger eksisterende indekser som aldri brukes og bare legger til overhead.

En gruppert indeks lagrer selve radene i indeksrekkefรธlge, sรฅ en tabell kan bare ha รฉn. En ikke-gruppert indeks inneholder pekere til radene, sรฅ en tabell kan ha flere av dem.

Oppsummer dette innlegget med: