Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

Reorganizacja indeksów

Termin Definicja
Reorganizacja indeksów

Reorganizacja indeksów to lżejsza operacja defragmentująca, wykonywana w tle bez blokowania tabeli.

Architektura drzew B-Tree i fizyczne podłoże zjawiska fragmentacji

Reorganizacja indeksów to proces operujący na poziomie fizycznych struktur przechowujących dane w relacyjnych systemach bazodanowych. Większość współczesnych silników, takich jak Microsoft SQL Server, PostgreSQL, Oracle czy silnik InnoDB w MySQL, wykorzystuje struktury oparte na zrównoważonych drzewach wielodrogowych, najczęściej w wariancie B+Tree (B-drzewo). Struktura ta składa się z węzła głównego, węzłów pośrednich oraz węzłów liści (leaf nodes). Węzły liści zawierają właściwe dane tabeli lub wskaźniki do rekordów w strukturze sterty (heap). Rozmiar pojedynczej strony logicznej w bazie danych wynosi zazwyczaj 8 kilobajtów (KB) i to na poziomie tych bloków następuje właściwa alokacja pamięci masowej oraz operacje wejścia i wyjścia (I/O). Odpowiednie, sekwencyjne ułożenie tych stron na dysku warunkuje optymalną wydajność odczytu dużych bloków danych.

Z biegiem czasu, na skutek operacji dodawania, usuwania i modyfikacji rekordów (DML), struktura drzewa ulega dwóm głównym typom degradacji. Pierwszym z nich jest fragmentacja logiczna. Ma ona miejsce, gdy fizyczna kolejność stron zapisanych na nośniku przestaje odpowiadać logicznej kolejności wyznaczonej przez klucze indeksu. Zjawisko to wynika wprost z mechanizmu podziału strony (page split). Kiedy nowy rekord nie mieści się na docelowej stronie, alokator rezerwuje nową, czystą stronę na nośniku i przenosi tam równo połowę rekordów ze strony przepełnionej. Nowa strona zostaje zapisana zazwyczaj na końcu pliku danych lub w innym wolnym sektorze, co przerywa fizyczną ciągłość. Drugi wariant to fragmentacja wewnętrzna, polegająca na spadku ogólnej gęstości zapisu. Usuwanie danych powoduje powstawanie pustych przestrzeni wewnątrz stron, przez co baza ładuje do pamięci operacyjnej bloki wypełnione jedynie częściowo, co utylizuje zasoby serwera bez generowania realnego zysku dla procesu przetwarzania zapytań.

Różnice operacyjne i algorytmiczne między reorganizacją a całkowitą przebudową

W dziedzinie zarządzania ciągłością działania struktur bazodanowych wyróżnia się dwie odrębne metody niwelowania skutków fragmentacji: reorganizację (index reorganize) oraz całkowitą przebudowę (index rebuild). Reorganizacja jest procesem lżejszym z punktu widzenia zapotrzebowania na pamięć dyskową, czas pracy procesora oraz log transakcyjny. Podczas tej operacji silnik bazy danych nie buduje nowej struktury indeksu w innej lokalizacji pliku. Algorytm odczytuje poziom liści w kolejności logicznej i fizycznie przestawia strony wewnątrz pliku, bazując na technice zamiany (page swapping) w obszarze uprzednio przydzielonych ekstentów wielkości 64 KB. Proces ten działa całkowicie w trybie online. Oznacza to, że nakłada on jedynie krótkotrwałe blokady (page-level locks) na edytowaną w danej chwili stronę, zwalniając ją natychmiast po fizycznym przeniesieniu. Pozwala to na nieprzerwaną obsługę zapytań pochodzących od aplikacji klienckich, ponieważ operacje DML na tabeli nie ulegają zatrzymaniu.

Z kolei operacja przebudowy (rebuild) działa w sposób zasadniczo odmienny. Wymaga alokacji nowej przestrzeni dyskowej o wielkości równej lub większej objętości obecnego indeksu, po czym w nowej sekcji dysku konstruowane jest nowe drzewo B-Tree. Po zakończeniu całego procesu przydziału i transferu, stara struktura zostaje usunięta. W domyślnym trybie działania przebudowa nakłada wyłączną blokadę strukturalną na tabelę (exclusive table lock), blokując innym transakcjom dostęp do zbioru przez cały czas pracy silnika. Dostępne są mechanizmy przebudowy w trybie online, ale generują one wyższe obciążenie kontrolerów I/O oraz znaczną ilość metadanych w dzienniku transakcyjnym (transaction log), co zmusza do podniesienia częstotliwości wykonywania kopii zapasowych logów.

Reorganizacja obejmuje również procedurę kompaktowania rekordów. Jeżeli sąsiednie strony dysponują wolnym miejscem, silnik przesuwa wiersze w taki sposób, aby zmniejszyć całkowitą liczbę zaalokowanych stron logicznych. Operacja zwalnia bloki dyskowe z powrotem do puli dostępnego miejsca w pliku bazy. Algorytm ten na bieżąco respektuje ustawienia współczynnika wypełnienia (fill factor), zachowując zaplanowany margines pustego miejsca na każdej stronie w celu zbuforowania przyszłych modyfikacji i zahamowania procesu przyrostu nowej fragmentacji w krótkim czasie po wykonaniu procedury serwisowej.

Wpływ rozkładu danych na układy wejścia-wyjścia i metody weryfikacji metadanych

Upowszechnienie nośników półprzewodnikowych (SSD) opartych na protokole NVMe zmodyfikowało wektor wpływu fragmentacji logicznej na sprzęt komputerowy. W przypadku wykorzystywania dysków talerzowych (HDD), konieczność odczytu nieciągłych obszarów wymuszała fizyczne przesuwanie głowicy elektromagnetycznej, powodując wysokie opóźnienia hardware'owe rzędu kilkunastu milisekund (seek time). Na nośnikach typu flash odczyt losowy odbywa się w warstwie układów scalonych i zajmuje mikrosekundy niezależnie od lokalizacji logicznego adresu bloku (LBA), co maskuje defekty struktury B-drzewa na poziomie wskaźników czasu dostępu.

Pomimo różnic w mechanice dysków, rozproszone indeksy nadal obciążają architekturę serwerową poprzez nadmiarową utylizację pamięci RAM i cykli instrukcji CPU. Zjawisko fragmentacji wewnętrznej odpowiada za nieefektywne gospodarowanie strefą buforowania zapytań (Buffer Pool). Jeśli kompresja indeksu jest niska, a strony zapełnione są na poziomie 40%, system bazodanowy i tak musi przesłać z dysku kompletny blok o wadze 8 KB, aby przetworzyć użyteczną część danych. Prowadzi to do przedwczesnego wymuszenia zrzutu starszych danych z puli pamięci podręcznej i wzmaga ruch na magistrali. Obsługa tych zbędnych transferów z nośnika NVMe wymusza dłuższą pracę jądra systemu operacyjnego na potrzeby przerwań sprzętowych.

Aby wykonać odczyt stopnia fragmentacji, działy techniczne korzystają z wbudowanych widoków systemowych. W przypadku technologii firmy Microsoft, wskaźniki pobierane są poprzez wywołanie funkcji systemowej sys.dm_db_index_physical_stats. Skrypty utrzymaniowe oceniają zwracany przez zapytanie próg procentowy. Standardowe zasady inżynieryjne zakładają inicjację bezblokującej reorganizacji w przedziale od 5 do 30 procent fragmentacji logicznej indeksu. Powyżej wskaźnika 30 procent optymalniejszą drogą pod względem sumarycznego czasu zablokowania zasobów sprzętowych pozostaje włączenie całkowitej przebudowy danego klucza indeksującego.

Bazy danych a profil serwisu sprzętu konsumenckiego

Korekcja indeksów w relacyjnych silnikach bazodanowych, planowanie okien serwisowych oraz optymalizacja wielodrogowych drzew wyszukiwania stanowią element inżynierii danych i administracji serwerami (DBA). Tego typu interwencje w warstwę logiczną oprogramowania komercyjnego pozostają w całości poza profilem technicznych punktów napraw komputerów. Warszawskie Pogotowie Komputerowe ukierunkowane jest wyłącznie na diagnozowanie usterek sprzętowych, konserwację podzespołów bazowych oraz wymianę wyeksploatowanej elektroniki konsumenckiej. Prace serwisowe obejmują takie procesy jak lutowanie uszkodzonych elementów w topologii SMD/BGA, programowanie mikroukładów KBC i kości BIOS, eliminacja problemów w obwodach sekcji zasilania układu scalonego, wymiana zbitych paneli LCD w laptopach czy odzyskiwanie surowych sektorów z fizycznie zatartych dysków twardych i zablokowanych sterowników nośników SSD.

Prowadzenie polityki audytu baz danych, migracje korporacyjne lub defragmentacja klastrów to usługi informatyczne niezwiązane z działaniami typowego serwisu naprawczego. W starszych cyklach technologicznych zdarzały się incydentalne zgłoszenia dotyczące jednostek stacjonarnych klasy PC, które pełniły rolę wdrożeń plikowych baz systemów Paradox, Clipper lub wczesnych implementacji MS Access. Zgłoszenia dotyczyły nadmiernej, słyszalnej eksploatacji głowic dysków HDD podczas rutynowej rejestracji rekordów. Optymalizacja pliku systemowego naprawiała wtedy problem mechaniczny sprzętu. Dzisiejsze aplikacje biznesowe bazują na architekturach rozproszonych w chmurze, a nośniki lokalne cechuje budowa półprzewodnikowa. Przekłada się to na fakt, że zgłoszenia awarii spowodowanych lokalną fragmentacją plików baz danych po prostu zniknęły, stając się rzadkością w ewidencji usterkowości dla stanowisk indywidualnych.

Jeżeli diagnozują Państwo w sprzęcie usterkę fizyczną objawiającą się brakiem inicjalizacji płyty głównej, niemożnością identyfikacji dysku twardego przez oprogramowanie UEFI sprzętu, problemami z ładowaniem baterii lub koniecznością chemicznego oczyszczenia układów na skutek wylania cieczy, zajmiemy się precyzyjną lokalizacją wadliwego komponentu i jego sprzętową wymianą. Realizacja operacji takich jak reorganizacja baz danych SQL czy wdrażanie zaawansowanych algorytmów analitycznych wymaga natomiast interwencji dewelopera odpowiedzialnego za kod danej aplikacji informatycznej.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę