Indeksowanie w DBMS: co to jest, rodzaje indeksów z PRZYKŁADAMI

⚡ Inteligentne podsumowanie

Indeksowanie w bazie danych to technika strukturyzowania danych, która umożliwia szybkie wyszukiwanie rekordów za pomocą mapyping klucz wyszukiwania do adresu dysku jego rekordu. Indeksy podstawowe, pomocnicze, klastrowe, wielopoziomowe i B-tree różnią się pod względem przestrzeni handlowej, szybkości i konserwacji.

  • 🗂️. Podstawowa idea: Indeks to mała, dwukolumnowa tabela zawierająca klucz i wskaźnik do bloku dyskowego rekordu.
  • 📇 Indeks podstawowy: Uporządkowany plik na kluczu, podzielony na warianty gęste i rzadkie.
  • 🔎 Gęste kontra rzadkie: Gęsty indeks przechowuje jeden wpis na klucz; rzadki indeks przechowuje mniej wpisów, aby zaoszczędzić miejsce.
  • 🏷️ Indeks wtórny: Zbudowany w oparciu o pole nieuporządkowane, używa segmentów, aby dotrzeć do każdego pasującego rekordu.
  • 📚 ClusterIndeks: Grupuje wiersze, które mają wspólny, nieunikalny klucz, w jeden klaster.
  • 🌳 Indeks drzewa B: Zrównoważone drzewo wielopiętrowe, którego połączone węzły liściowe obsługują losowy i sekwencyjny dostęp.
  • ⚖️. Kompromis: Indeksy przyspieszają odczyt, ale spowalniają wstawianie, aktualizowanie i usuwanie danych oraz zajmują dodatkowe miejsce.

Indeksowanie w bazie danych

Co to jest indeksowanie?

Indeksowanie Indeks to technika struktury danych, która umożliwia szybkie pobieranie rekordów z pliku bazy danych. Indeks to mała tabela zawierająca tylko dwie kolumny. Pierwsza kolumna zawiera kopię klucza podstawowego lub kandydującego tabeli. Druga kolumna zawiera zestaw… wskaźniki przechowujący adres bloku dysku, w którym przechowywana jest konkretna wartość klucza.

Indeks:

  • Przyjmuje jako dane wejściowe klucz wyszukiwania.
  • Efektywnie zwraca kolekcję pasujących rekordów.

Bez indeksu baza danych musi przeskanować każdy wiersz, aby odpowiedzieć na zapytanie. Z indeksem przechodzi bezpośrednio do pasującego bloku, dlatego wybrany typ indeksu ma duży wpływ na wydajność.

Rodzaje indeksowania w DBMS

Typ indeksów w bazie danych
Typ indeksów w bazie danych

Indeksowanie w bazie danych jest definiowane na podstawie jej atrybutów indeksowania. Istnieją dwa główne typy metod indeksowania:

  • Indeksowanie podstawowe
  • Indeksowanie wtórne

Indeks podstawowy w systemie DBMS

Indeks podstawowy to uporządkowany plik o stałej długości z dwoma polami. Pierwsze pole jest takie samo jak klucz podstawowy, a drugie wskazuje na konkretny blok danych. W indeksie podstawowym zawsze istnieje relacja jeden do jednego między wpisami w tabeli indeksów.

Indeks podstawowy dzieli się dodatkowo na dwa typy:

  • Gęsty indeks
  • Rzadki indeks

Gęsty indeks

W indeksie gęstym dla każdej wartości klucza wyszukiwania w bazie danych tworzony jest rekord. Pozwala to na szybsze wyszukiwanie, ale wymaga więcej miejsca do przechowywania rekordów indeksu. W tej metodzie rekordy zawierają wartość klucza wyszukiwania i wskazują na rzeczywisty rekord na dysku.

Gęsty indeks w systemie DBMS

Rzadki indeks

Indeks rzadki to rekord indeksu, który pojawia się tylko dla niektórych wartości w pliku. Indeks rzadki pomaga rozwiązać problemy związane z gęstym indeksowaniem w DBMSW tej technice zakres kolumn indeksowych przechowuje ten sam adres bloku danych, a gdy dane muszą zostać pobrane, pobierany jest adres tego bloku.

Rzadki indeks przechowuje rekordy indeksu tylko dla niektórych wartości kluczy wyszukiwania. Zajmuje mniej miejsca i wymaga mniej nakładów na konserwację wstawiania i usuwania rekordów, ale jest wolniejszy niż indeks gęsty pod względem lokalizowania rekordów.

Poniżej znajduje się przykład indeksu bazy danych o indeksie rzadkim.

Rzadki indeks w systemie DBMS

Indeks gęsty kontra indeks rzadki

Dwa podstawowe warianty indeksu prowadzą do przeciwnych kompromisów, podsumowanych poniżej.

WYGLĄD Gęsty indeks Rzadki indeks
wpisy Jeden na klucz wyszukiwania Jeden na blok
Typ przestrzeni Więcej Less
Prędkość wyszukiwania Szybciej Wolniej
Konserwacja Wyższy Opuść

Indeks wtórny w DBMS

Indeks pomocniczy w systemie DBMS może być generowany przez pole o unikalnej wartości dla każdego rekordu i powinien być kluczem kandydującym. Jest on również znany jako indeks nieklastrowy.

Ta dwupoziomowa technika indeksowania bazy danych służy do redukcji mapyping rozmiar pierwszego poziomu. Na pierwszym poziomie wybrano szeroki zakres liczb, więc mapaping rozmiar zawsze pozostaje mały.

Przykład indeksu dodatkowego

Przyjrzyjmy się indeksowaniu wtórnemu na przykładzie indeksu bazy danych. W bazie danych kont bankowych dane są przechowywane sekwencyjnie według acc_no, ale możesz chcieć znaleźć wszystkie konta w konkretnym oddziale banku ABC.

Tutaj możesz mieć indeks pomocniczy dla każdego klucza wyszukiwania. Rekord indeksu wskazuje na kontener, który zawiera wskaźniki do wszystkich rekordów z daną wartością klucza wyszukiwania.

Indeks wtórny w systemie DBMS

ClusterIndeks w DBMS

W indeksie klastrowym same rekordy, a nie wskaźniki, są przechowywane w indeksie. Czasami indeks jest tworzony na podstawie kolumn niebędących kluczami podstawowymi, które mogą nie być unikatowe dla każdego rekordu. W takiej sytuacji można zgrupować dwie lub więcej kolumn, aby uzyskać unikalne wartości i utworzyć indeks, który nazywa się indeksem klastrowym. Pomaga to również szybciej zidentyfikować rekord.

Przykład: Załóżmy, że firma zrekrutowała wielu pracowników do różnych działów. W takim przypadku należy utworzyć indeks klastrowania dla wszystkich pracowników należących do tego samego działu.

Są one traktowane jako pojedynczy klaster, a indeks wskazuje na klaster jako całość. W tym przypadku Department_no jest kluczem nieunikalnym.

Czym jest indeks wielopoziomowy?

Indeksowanie wielopoziomowe jest tworzone, gdy indeks podstawowy nie mieści się w pamięci. W tej metodzie indeksowania można zmniejszyć liczbę dostępów do dysku potrzebnych do dotarcia do dowolnego rekordu. Rekordy są przechowywane na dysku w postaci pliku sekwencyjnego, a na jego podstawie tworzony jest indeks rozrzedzony.

Indeks wielopoziomowy w DBMS

Indeks B-drzewa

Indeks B-tree to najszerzej stosowana struktura danych do indeksowania drzewiastego w systemach DBMS. Jest to wielopoziomowy format indeksowania drzewiastego, który wykorzystuje zbalansowane drzewa wyszukiwania binarnegoWszystkie węzły liściowe drzewa B przechowują rzeczywiste wskaźniki danych.

Co więcej, wszystkie węzły liściowe są połączone listą powiązaną, co pozwala drzewu B obsługiwać zarówno dostęp losowy, jak i sekwencyjny.

Indeks B-drzewa w systemie DBMS

  • Węzły liściowe muszą mieć od 2 do 4 wartości.
  • Każda ścieżka od korzenia do liścia ma przeważnie taką samą długość.
  • Węzły nie-liściowe, poza węzłem głównym, mają od 3 do 5 węzłów potomnych.
  • Każdy węzeł, który nie jest korzeniem ani liściem, ma od n/2 do n dzieci.

W miejscach, gdzie dominują wyszukiwania dokładnego dopasowania, a skanowanie zakresów jest rzadkością, mieszanie może być szybszą alternatywą dla indeksu B-drzewa.

Zalety indeksowania

Do najważniejszych zalet indeksowania należą:

  • Pomaga ograniczyć całkowitą liczbę operacji wejścia/wyjścia potrzebnych do pobrania danych, dzięki czemu nie trzeba uzyskiwać dostępu do wiersza bezpośrednio z poziomu tabeli.
  • Zapewnia użytkownikom szybsze wyszukiwanie i pobieranie danych.
  • Może zmniejszyć przestrzeń tabelaryczną, ponieważ nie trzeba przechowywać ROWID w indeksie dla każdego połączonego wiersza.
  • Dane w węzłach liściowych są już uporządkowane według wartości klucza.

Wady indeksowania

Do istotnych wad indeksowania należą:

  • Aby wykonać indeksowanie, potrzebny jest klucz podstawowy tabeli z unikalną wartością.
  • Nie można utworzyć nowego indeksu na podstawie danych, które są już uporządkowane w ten sam sposób.
  • Nie wolno dzielić tabeli zorganizowanej według indeksu.
  • Indeksowanie zmniejsza wydajność zapytań INSERT, DELETE i UPDATE.

FAQ

Indeks podstawowy jest tworzony na podstawie pola, według którego uporządkowany jest plik, zazwyczaj klucza podstawowego. Indeks pomocniczy jest tworzony na podstawie innego pola, dlatego potrzebuje przedziałów, aby dotrzeć do każdego pasującego rekordu.

Drzewo B pozostaje zrównoważone, więc każde wyszukiwanie wymaga podobnej, niewielkiej liczby odczytów z dysku, a jego połączone liście obsługują skanowanie zakresów. Dzięki temu jest ono skuteczne zarówno w przypadku zapytań punktowych, jak i zakresowych.

Każde wstawienie, aktualizacja i usunięcie muszą również uwzględniać każdy indeks. Więcej indeksów przyspiesza odczyt, ale zwiększa obciążenie związane z zapisem i przechowywaniem, dlatego powinny być tworzone tylko tam, gdzie zapytania faktycznie przynoszą korzyści.

Doradcy ds. indeksów AI analizują obciążenie zapytaniami i rekomendują indeksy, które przyniosą największe oszczędności, jednocześnie sygnalizując istniejące indeksy, które nigdy nie są używane i powodują jedynie narzut.

Indeks klastrowany przechowuje wiersze w kolejności indeksowej, więc tabela może mieć tylko jeden. Indeks nieklastrowany przechowuje wskaźniki do wierszy, więc tabela może mieć ich kilka.

Podsumuj ten post następująco: