| Termin | Definicja |
|---|---|
| DELETE w indeksach kolumnowych | DELETE w indeksach kolumnowych to operacja usuwania danych uwzględniająca specyfikę fizycznej organizacji tego typu indeksu. Na czym polega DELETE w indeksie kolumnowymInstrukcja W praktycznych implementacjach usunięcie nie musi oznaczać natychmiastowego fizycznego przepisania całego segmentu. Silnik może oznaczyć wiersz jako usunięty w pomocniczej strukturze, często nazywanej mapą usunięć. Podczas kolejnych odczytów wiersze oznaczone jako usunięte są pomijane. Dzięki temu pojedyncza operacja nie wymaga natychmiastowej dekompresji, przebudowania i ponownej kompresji całego segmentu. Mechanizm ten zmniejsza koszt krótkiej operacji, ale pozostawia w strukturze dane, które nadal zajmują miejsce i mogą zwiększać koszt późniejszego skanowania. Wpływ usuwania na segmenty, kompresję i odczytIndeks kolumnowy jest projektowany przede wszystkim do odczytów analitycznych obejmujących wiele wierszy i niewielką liczbę kolumn. Taki sposób dostępu dobrze wykorzystuje kompresję oraz przetwarzanie wektorowe, w którym operator wykonuje działania na grupach wartości zamiast przetwarzać każdy rekord całkowicie osobno. Po wykonaniu wielu operacji Duża liczba logicznie usuniętych wierszy obniża efektywność kompresji oraz może zwiększać ilość pracy wykonywanej podczas skanowania. Nie oznacza to, że każde usunięcie natychmiast powoduje zauważalny problem. Znaczenie ma między innymi udział usuniętych wierszy w segmencie, rozmiar danych, selektywność predykatów i częstotliwość wykonywania zapytań. Segment z niewielką liczbą usunięć może działać poprawnie, natomiast masowe kasowanie danych z dużej tabeli kolumnowej wymaga późniejszej oceny stanu segmentów oraz zajętego miejsca. Różnica między usunięciem logicznym a fizycznymWarto rozdzielić dwa pojęcia: usunięcie logiczne oraz odzyskanie miejsca po usuniętych danych. Pierwsze oznacza zmianę widoczności wiersza dla zapytań. Drugie wymaga uporządkowania albo przebudowania odpowiednich struktur tak, aby niepotrzebne wartości przestały zajmować miejsce. Samo wykonanie Przy diagnostyce skutków usuwania analizuje się liczbę wierszy usuniętych w poszczególnych segmentach, ich stan kompresji, rozkład danych oraz rozmiar struktur pomocniczych. Istotne jest również sprawdzenie, czy operacja była wykonywana pojedynczym dużym poleceniem, czy w partiach. Usuwanie partiami może ograniczać jednorazowe zużycie zasobów i czas trwania pojedynczej transakcji, ale nie usuwa automatycznie skutków nagromadzonych oznaczeń. Zbyt częste modyfikacje tabeli kolumnowej mogą ponadto zwiększać obciążenie mechanizmów blokowania, dziennika transakcyjnego i kontroli współbieżności. Jak oceniać skutki DELETE w praktycznym środowiskuOcena problemu powinna rozpocząć się od ustalenia, czy spowolnienie dotyczy samego polecenia W przypadku środowisk korzystających z indeksów kolumnowych działania porządkowe dobiera się do konkretnego silnika bazy danych i jego wersji. Nie należy bez sprawdzenia stosować poleceń przeznaczonych dla innego produktu, ponieważ podobne nazwy struktur mogą oznaczać odmienne mechanizmy. Przed większym usuwaniem warto zweryfikować plan awaryjny, wpływ transakcji na dziennik oraz zachowanie zapytań wykonywanych równolegle. Diagnostyka powinna obejmować także warstwę sprzętową, jeśli objawy wskazują na ograniczenia pamięci, wydajność nośnika albo przeciążenie procesora, ponieważ problemy tych elementów mogą wyglądać podobnie do degradacji indeksu. |