| Termin | Definicja |
|---|---|
| Fragmentacja Columnstore | Fragmentacja Columnstore to zjawisko rozproszenia danych w strukturach kolumnowego indeksu, obniżające jego wydajność. Na czym polega fragmentacja indeksu columnstoreFragmentacja columnstore oznacza pogorszenie uporządkowania i wykorzystania danych zapisanych w kolumnowym indeksie. W takim indeksie rekordy nie są przechowywane wyłącznie jako klasyczne wiersze, lecz są dzielone na grupy wierszy, a wartości poszczególnych kolumn trafiają do oddzielnych segmentów. Pozwala to odczytywać tylko te kolumny, które są potrzebne zapytaniu, oraz skutecznie stosować kompresję. Fragmentacja pojawia się wtedy, gdy struktura indeksu zawiera wiele niepełnych grup wierszy, grup o nierównomiernym rozmiarze albo grup, w których znaczna część rekordów została oznaczona jako usunięta. Najczęściej źródłem problemu jest intensywne wykonywanie operacji Wpływ grup wierszy i usuniętych rekordów na zapytaniaColumnstore osiąga dobrą wydajność między innymi dzięki przetwarzaniu danych partiami oraz eliminowaniu segmentów, które na podstawie metadanych nie mogą zawierać wartości spełniających warunek zapytania. Jeżeli wartości są rozłożone w wielu słabo skompresowanych lub niepełnych segmentach, możliwości takiego pomijania są mniejsze. Silnik może wtedy odczytać więcej danych z dysku lub pamięci, wykonać więcej operacji dekompresji i zużyć więcej czasu procesora. Fragmentacja nie musi więc oznaczać uszkodzenia indeksu. Jest to przede wszystkim stan, w którym struktura nadal jest poprawna logicznie, ale mniej korzystna dla zapytań. Istotne jest rozróżnienie pomiędzy skompresowaną grupą wierszy a grupą delta. Nowe lub często zmieniane dane mogą przez pewien czas trafiać do obszaru delta, który jest przeznaczony do obsługi operacji transakcyjnych. Później specjalny mechanizm przenosi zamknięte grupy delta do formatu columnstore. Duża liczba małych grup delta może zwiększać narzut odczytu, natomiast skompresowane grupy z wieloma usuniętymi rekordami zawierają dane, których zapytania muszą w praktyce omijać. Ocena fragmentacji powinna zatem obejmować stan grup wierszy, liczbę wszystkich rekordów i liczbę rekordów oznaczonych jako usunięte. Rozpoznawanie problemu w strukturze columnstoreDiagnoza powinna rozpocząć się od ustalenia, czy wolniejsze zapytania rzeczywiście korzystają z indeksu columnstore oraz czy ich plan wykonania zmienił się po wzroście liczby operacji modyfikujących dane. Sam czas wykonania pojedynczego zapytania nie wystarcza do potwierdzenia fragmentacji, ponieważ podobny objaw mogą powodować nieaktualne statystyki, ograniczona pamięć, oczekiwanie na operacje wejścia-wyjścia, blokady lub zmiana selektywności warunków. Potrzebne jest porównanie planów wykonania, obciążenia zasobów i stanu grup wierszy. W środowisku Microsoft SQL Server informacje o fizycznym stanie grup wierszy columnstore można analizować za pomocą widoku dynamicznego Porządkowanie indeksu i kontrola skutków konserwacjiPodstawową operacją ograniczającą fragmentację columnstore jest reorganizacja indeksu. W Microsoft SQL Server polecenie Przebudowa indeksu tworzy jego strukturę ponownie i może usunąć skutki większych zmian w danych, lecz wymaga starannego zaplanowania. Przed jej wykonaniem trzeba sprawdzić dostępne miejsce, obciążenie bazy, czas trwania operacji oraz wpływ na równoległe zapytania. Nie powinno się stosować stałego harmonogramu przebudowy wyłącznie dlatego, że dotyczy on klasycznych indeksów wierszowych. Dla columnstore decyzję lepiej oprzeć na pomiarach: udziale usuniętych rekordów, liczbie i stanie grup wierszy, planach zapytań oraz rzeczywistym wzroście czasu odczytu. Po konserwacji należy ponownie zmierzyć te parametry, aby potwierdzić, że operacja poprawiła jakość struktury, a nie tylko zwiększyła chwilowe zużycie zasobów. |