Indexarea în DBMS: Ce este, Tipuri de indexuri cu EXEMPLE

⚡ Rezumat inteligent

Indexarea în bazele de date este o tehnică de structurare a datelor care preia rapid înregistrările prin mapareping o cheie de căutare pentru adresa de disc a înregistrării sale. Indexurile primare, secundare, de clustering, multinivel și B-tree indexează fiecare spațiu de tranzacționare, viteză și întreținere în mod diferit.

  • 🗂️ Ideea de bază: Un index este un tabel mic cu două coloane care asociază o cheie cu un pointer către blocul de disc al înregistrării.
  • 📇 Index primar: Un fișier ordonat pe cheie, împărțit în variante dense și rare.
  • 🔎 Dens vs. Rar: Un index dens stochează o intrare per cheie; un index dispers stochează mai puține intrări pentru a economisi spațiu.
  • 🏷️ Index secundar: Construit pe un câmp fără ordonare, folosește compartimente pentru a accesa fiecare înregistrare corespondentă.
  • 📚 ClusterIndex de ing: Grupează rândurile care au în comun o cheie neunică într-un singur cluster.
  • 🌳 Indexul arborelui B: Un arbore multinivel echilibrat ale cărui noduri frunză legate permit acces aleatoriu și secvențial.
  • 🇧🇷 Compensație: Indexurile accelerează citirile, dar inserările, actualizările și ștergerile încetinesc și consumă spațiu suplimentar.

Indexarea în baza de date

Ce este indexarea?

Indexarea este o tehnică de structurare a datelor care vă permite să recuperați rapid înregistrări dintr-un fișier de bază de date. Un index este un tabel mic având doar două coloane. Prima coloană cuprinde o copie a cheii primare sau candidate a unui tabel. A doua coloană conține un set de indicii care conține adresa blocului de disc unde este stocată valoarea cheii respective.

Un indice:

  • Preia o cheie de căutare ca intrare.
  • Returnează eficient o colecție de înregistrări care se potrivesc.

Fără un index, baza de date trebuie să scaneze fiecare rând pentru a răspunde la o interogare. Cu unul, sare direct la blocul corespunzător, motiv pentru care tipul de index ales are un efect mare asupra performanței.

Tipuri de indexare în DBMS

Tipul de indici din baza de date
Tipul de indici din baza de date

Indexarea într-o bază de date este definită pe baza atributelor sale de indexare. Cele două tipuri principale de metode de indexare sunt:

  • Indexarea primară
  • Indexare secundară

Index primar în DBMS

Un index primar este un fișier ordonat de lungime fixă, cu două câmpuri. Primul câmp este același cu cheia primară, iar al doilea câmp indică acel bloc de date specific. În indexul primar, există întotdeauna o relație unu-la-unu între intrările din tabelul de indexuri.

Indexul primar este, de asemenea, împărțit în două tipuri:

  • Index dens
  • Index rar

Index dens

Într-un index dens, se creează o înregistrare pentru fiecare valoare a cheii de căutare din baza de date. Acest lucru vă ajută să căutați mai rapid, dar necesită mai mult spațiu pentru stocarea înregistrărilor indexului. În această metodă, înregistrările conțin valoarea cheii de căutare și indică înregistrarea reală de pe disc.

Index dens în SGBD

Index rar

Un index dispers este o înregistrare de index care apare doar pentru unele dintre valorile din fișier. Indexul dispers vă ajută să rezolvați problemele indexării dense în Baze de dateÎn această tehnică, o serie de coloane de index stochează aceeași adresă de bloc de date, iar atunci când este nevoie de preluare a datelor, se extrage adresa respectivă de bloc.

Un index dispers stochează înregistrări de index doar pentru anumite valori ale cheii de căutare. Necesită mai puțin spațiu și mai puține costuri de întreținere pentru inserări și ștergeri, dar este mai lent decât indexul dens pentru localizarea înregistrărilor.

Mai jos este un exemplu de index al bazei de date pentru un index dispers.

Index dispers în SGBD

Indice dens vs. indice dispers

Cele două variante principale ale indicelui fac compromisuri opuse, rezumate mai jos.

Aspect Index dens Index rar
intrările Unul per cheie de căutare Unul pe bloc
Spaţiu Mai Mult Less
Viteză de căutare Mai rapid Mai lent
Mentenanță Superior Coborâți

Index secundar în DBMS

Indexul secundar din SGBD poate fi generat de un câmp care are o valoare unică pentru fiecare înregistrare și ar trebui să fie o cheie candidată. Este cunoscut și sub denumirea de index non-clustering.

Această tehnică de indexare a bazelor de date pe două niveluri este utilizată pentru a reduce hartaping dimensiunea primului nivel. Pentru primul nivel, este selectat un interval mare de numere, astfel încât hartaping dimensiunea rămâne întotdeauna mică.

Exemplu de index secundar

Să înțelegem indexarea secundară cu un exemplu de indexare a bazei de date. Într-o bază de date cu conturi bancare, datele sunt stocate secvențial de către cont_nr, dar este posibil să doriți să găsiți toate conturile dintr-o anumită sucursală a băncii ABC.

Aici, puteți avea un index secundar pentru fiecare cheie de căutare. Înregistrarea indexului indică o categorie care conține pointeri către toate înregistrările cu acea valoare specifică a cheii de căutare.

Index secundar în SGBD

Clustering Index în DBMS

Într-un index grupat, în index sunt stocate înregistrările în sine, nu pointerii. Uneori, indexul este creat pe coloane care nu sunt cheie primară, care pot să nu fie unice pentru fiecare înregistrare. Într-o astfel de situație, puteți grupa două sau mai multe coloane pentru a obține valori unice și a crea un index, numit index grupat. Acest lucru vă ajută, de asemenea, să identificați înregistrarea mai rapid.

Exemplu: Să presupunem că o companie a recrutat mulți angajați în diverse departamente. În acest caz, ar trebui creat un index de clustering pentru toți angajații care aparțin aceluiași departament.

Acestea sunt considerate ca un singur cluster, iar indexul indică clusterul în ansamblu. Aici, Department_no este o cheie neunică.

Ce este un index multinivel?

Indexarea pe mai multe niveluri este creată atunci când un index principal nu încape în memorie. În acest tip de metodă de indexare, puteți reduce numărul de accesări la disc pentru a ajunge la orice înregistrare. Înregistrările sunt păstrate pe disc ca fișier secvențial, iar peste fișierul respectiv este creat un index dispers.

Index multinivel în SGBD

B-Tree Index

Indexul B-tree este cea mai utilizată structură de date pentru indexarea bazată pe arbori în SGBD-uri. Este un format multinivel de indexare bazată pe arbori care utilizează indexare echilibrată arbori binari de căutareToate nodurile frunză ale arborelui B dețin pointerii de date efectivi.

Mai mult, toate nodurile frunză sunt interconectate printr-o listă înlănțuită, ceea ce permite unui arbore B să suporte atât acces aleatoriu, cât și secvențial.

Indexul arborelui B în SGBD

  • Nodurile frunză trebuie să aibă între 2 și 4 valori.
  • Fiecare cale de la rădăcină la frunză are în mare parte aceeași lungime.
  • Nodurile non-frunză, în afară de nodul rădăcină, au între 3 și 5 noduri copil.
  • Fiecare nod care nu este rădăcină sau frunză are între n/2 și n copii.

Acolo unde căutările cu potrivire exactă domină și scanările de interval sunt rare, hashing poate fi o alternativă mai rapidă la un index B-tree.

Avantajele indexării

Avantajele importante ale indexării sunt:

  • Aceasta ajută la reducerea numărului total de operațiuni I/O necesare pentru a recupera date, astfel încât să nu fie nevoie să accesați un rând direct din tabel.
  • Oferă utilizatorilor o căutare și o recuperare mai rapidă a datelor.
  • Poate reduce spațiul din tabel, deoarece nu este nevoie să stocați ROWID-ul în index pentru fiecare rând legat.
  • Datele din nodurile frunză sunt deja ordonate după valoarea cheii.

Dezavantajele indexării

Principalele dezavantaje ale indexării sunt:

  • Pentru a efectua indexarea, aveți nevoie de o cheie primară în tabel cu o valoare unică.
  • Nu puteți construi un alt index pe date care sunt deja organizate în același mod prin indexare.
  • Nu aveți voie să partiționați un tabel organizat în index.
  • Indexarea scade performanța în interogările INSERT, DELETE și UPDATE.

Întrebări frecvente

Un index primar este construit pe câmpul după care este ordonat fișierul, de obicei cheia primară. Un index secundar este construit pe un câmp diferit, deci are nevoie de compartimente pentru a accesa fiecare înregistrare corespondentă.

Un arbore B rămâne echilibrat, astfel încât fiecare căutare necesită un număr similar de citiri pe disc, iar frunzele sale legate acceptă scanări de interval. Acest lucru îl face puternic atât pentru interogările punctuale, cât și pentru cele de interval.

Fiecare inserare, actualizare și ștergere trebuie să mențină și fiecare index. Mai mulți indexuri accelerează citirea, dar adaugă costuri suplimentare de scriere și spațiu de stocare, așa că ar trebui creați doar acolo unde interogările sunt cu adevărat avantajoase.

Consultanții de indecșire bazați pe inteligență artificială studiază volumul de lucru al interogărilor și recomandă indecși care ar reduce cel mai mult costurile, semnalând în același timp indecșii existenți care nu sunt utilizați niciodată și care adaugă doar costuri suplimentare.

Un index grupat stochează rândurile în ordinea indexului, deci un tabel poate avea doar unul. Un index negrupat conține pointeri către rânduri, deci un tabel poate avea mai multe.

Rezumați această postare cu: