| Termin | Definicja |
|---|---|
| Indeks hybrydowy (NCCI + Rowstore) | Indeks hybrydowy (NCCI + Rowstore) to konfiguracja łącząca nieklastrowany indeks kolumnowy z tradycyjnym indeksem wierszowym na tej samej tabeli. Indeks hybrydowy NCCI + Rowstore — czym jest ta konfiguracjaIndeks hybrydowy NCCI + Rowstore to sposób organizacji dostępu do danych, w którym jedna tabela korzysta jednocześnie z dwóch odmiennych mechanizmów indeksowania. Skrót NCCI oznacza nieklastrowany indeks kolumnowy, czyli strukturę przechowującą wartości według kolumn i przygotowaną przede wszystkim do szybkiego odczytu dużych zbiorów danych. Rowstore oznacza natomiast tradycyjny sposób przechowywania rekordów, w którym wiersz stanowi podstawową jednostkę dostępu. Na tej samej tabeli można więc utrzymywać indeks kolumnowy wspierający analizy oraz indeks wierszowy pomagający w selektywnym wyszukiwaniu pojedynczych rekordów lub niewielkich grup danych. Nie jest to po prostu połączenie dwóch identycznych indeksów. Każdy z nich odpowiada na inny rodzaj zapytania. Indeks kolumnowy ogranicza ilość danych odczytywanych podczas agregacji, filtrowania wielu rekordów i obliczania podsumowań. Indeks wierszowy może szybciej odnaleźć rekord na podstawie konkretnego identyfikatora, numeru dokumentu, daty albo innego pola o wysokiej selektywności. Silną stroną rozwiązania jest możliwość dopasowania sposobu odczytu do charakteru konkretnego zapytania, bez wymuszania jednego modelu pracy dla wszystkich operacji. W praktyce indeks hybrydowy nie zmienia samej tabeli w dwa niezależne zbiory. Dane nadal pozostają logicznie częścią jednego modelu, natomiast system zarządzania bazą otrzymuje dodatkowe ścieżki dostępu. Optymalizator analizuje warunki zapytania, wybierane kolumny, przewidywaną liczbę wyników oraz koszt odczytu. Na tej podstawie może użyć indeksu kolumnowego, indeksu wierszowego albo połączyć kilka etapów planu wykonania. Indeks hybrydowy NCCI + Rowstore a różne rodzaje zapytańNajłatwiej zrozumieć tę konfigurację przez porównanie dwóch scenariuszy. Zapytanie zwracające kilka pól z jednego rekordu, na przykład wyszukanie zamówienia po unikalnym numerze, zwykle potrzebuje szybkiego dotarcia do konkretnego wiersza. W takim przypadku przydatny może być indeks wierszowy. Z kolei zapytanie obliczające sumę, średnią lub liczbę zdarzeń dla wielu tysięcy albo milionów rekordów często korzysta z przewagi indeksu kolumnowego. Odczytywane są przede wszystkim potrzebne kolumny, a nie pełna zawartość każdego rekordu. Tradycyjny indeks wierszowy bywa korzystny wtedy, gdy warunek zwraca mały procent danych. Może obsługiwać wyszukiwanie po kluczu, kontrolę unikalności, sortowanie według określonych pól oraz szybkie połączenia tabel, jeżeli struktura indeksu odpowiada kolumnom używanym w zapytaniu. Jego zaletą jest również dobre zachowanie przy częstych modyfikacjach pojedynczych rekordów. Wadą może być większy koszt odczytu szerokiego zakresu danych, szczególnie gdy zapytanie wymaga skanowania wielu stron przechowywanych rekordami. Indeks NCCI jest zoptymalizowany pod kątem operacji obejmujących większe porcje danych. Dane są grupowane według kolumn, kompresowane i odczytywane w formie dogodnej dla obliczeń zbiorczych. Jeżeli zapytanie potrzebuje tylko kilku z kilkudziesięciu dostępnych kolumn, system może pominąć pozostałe. Takie zachowanie zmniejsza ilość pracy potrzebnej do wykonania raportu, ale nie oznacza, że każdy raport automatycznie będzie szybszy. Małe zapytanie z bardzo dokładnym filtrem może nadal lepiej pasować do indeksu wierszowego. Ważne jest także rozróżnienie między przyspieszeniem odczytu a kosztem utrzymania. Każdy dodatkowy indeks zajmuje miejsce i musi być aktualizowany po zmianie danych. Indeks hybrydowy ma sens wtedy, gdy zysk z szybszych zapytań analitycznych i operacyjnych przewyższa obciążenie związane z zapisem, przebudową oraz kontrolą struktur pomocniczych. Indeks hybrydowy NCCI + Rowstore — typowe problemy i ograniczeniaPierwszym częstym problemem jest założenie, że sama obecność indeksu kolumnowego rozwiąże wszystkie trudności z wydajnością. O wyniku decyduje plan wykonania, rozkład wartości, aktualność statystyk, kolejność filtrów oraz rzeczywista liczba zwracanych rekordów. Jeżeli zapytanie pobiera niemal całą tabelę albo korzysta z wyrażeń uniemożliwiających skuteczne filtrowanie, indeks może nie przynieść oczekiwanej poprawy. Drugim problemem jest nieprawidłowy dobór indeksu wierszowego. Zbyt wiele podobnych struktur może zwiększyć rozmiar bazy i wydłużyć operacje INSERT, UPDATE oraz DELETE. Z kolei indeks o niewłaściwej kolejności kolumn może być pomijany przez optymalizator. Istotne są nie tylko pola znajdujące się w indeksie, lecz także ich selektywność, typy danych, sposób sortowania i to, czy zapytania potrzebują dodatkowych kolumn spoza klucza. Trzeba również pamiętać o zmianach danych. Indeks kolumnowy może najlepiej działać po odpowiednim uporządkowaniu i skompresowaniu partii rekordów. Duża liczba świeżych lub często modyfikowanych danych może powodować sytuację, w której część informacji nie zachowuje jeszcze właściwości typowych dla dojrzałego układu kolumnowego. Wtedy plan wykonania może wykorzystywać różne ścieżki, a obserwowana wydajność będzie zależna od momentu pomiaru. Problemy mogą wynikać także z błędnej oceny obciążenia. Test wykonany na małej kopii tabeli nie zawsze odzwierciedla zachowanie środowiska produkcyjnego. Warto porównywać czas wykonania, liczbę odczytanych stron, zużycie pamięci, obciążenie procesora oraz wpływ zmian danych. Sama różnica w czasie pojedynczego uruchomienia nie wystarcza do rzetelnej oceny. Indeks hybrydowy NCCI + Rowstore — praktyczne wskazówki wdrożenioweProjektowanie konfiguracji powinno zaczynać się od obserwacji zapytań, a nie od wyboru nazwy indeksu. Najpierw należy określić, które operacje są najczęstsze, które trwają najdłużej i czy ich charakter jest punktowy, zakresowy czy analityczny. Pomocne jest zebranie planów wykonania oraz porównanie zapytań przed i po zmianie. Należy sprawdzić, czy system rzeczywiście używa zamierzonej struktury, czy też wybiera skan tabeli albo inną ścieżkę. Indeks wierszowy warto projektować wokół najczęściej używanych warunków wyszukiwania. Jeżeli zapytania filtrują najpierw po jednej kolumnie, a następnie po drugiej, kolejność pól w indeksie może mieć duże znaczenie. W niektórych przypadkach dodatkowe kolumny dołączone do indeksu pozwalają zwrócić wynik bez ponownego odczytu podstawowej tabeli, lecz zwiększają rozmiar struktury. Każdy taki wybór powinien być uzasadniony rzeczywistym profilem zapytań. Przy indeksie kolumnowym należy ocenić, czy tabela ma odpowiednią wielkość i czy występują zapytania przetwarzające większe zakresy. Dla niewielkiej tabeli koszt dodatkowej struktury może nie mieć uzasadnienia. W przypadku dużej tabeli trzeba natomiast obserwować kompresję, statystyki, podział danych na grupy oraz zachowanie podczas masowych zmian. Warto też ustalić procedurę okresowej kontroli, ponieważ profil danych może zmienić się wraz z rozwojem aplikacji. Bezpieczne wdrożenie powinno obejmować pomiar bazowy, test reprezentatywnych zapytań, kontrolę czasu aktualizacji danych oraz możliwość wycofania zmiany. Nie należy oceniać indeksu wyłącznie na podstawie jednego raportu. Lepszy obraz daje zestaw obejmujący wyszukiwanie pojedynczych rekordów, raport zakresowy, agregację, sortowanie i zapytania łączące dane z innych tabel. Kiedy sprawdzić indeks hybrydowy NCCI + Rowstore w serwisie komputerowymDo serwisu warto zgłosić się wtedy, gdy komputer wyraźnie zwalnia podczas pracy z bazą danych, raporty wykonują się coraz dłużej, aplikacja długo oczekuje na wynik albo po zmianie programu pojawiają się nieprzewidywalne różnice w czasie odpowiedzi. Przed modyfikacją indeksów dobrze zabezpieczyć kopię danych, opisać najważniejsze zapytania i zanotować moment występowania problemu. Pozwala to odróżnić kłopot z konstrukcją indeksu od problemu z pamięcią, nośnikiem, konfiguracją systemu lub samą aplikacją. Warszawskie Pogotowie Komputerowe 24/7 przyjmuje zgłoszenia dotyczące diagnostyki i działania komputerów, a kontakt telefoniczny jest możliwy pod numerem +48 22 100 48 29. Podczas analizy warto przedstawić przykładowe komunikaty, czas trwania operacji oraz informację, czy spowolnienie dotyczy tylko raportów, czy również zwykłego wyszukiwania i zapisu danych. Tak przygotowane zgłoszenie ułatwia ustalenie, czy potrzebna jest analiza indeksów, porządkowanie danych, kontrola stanu nośnika, czy szersza diagnostyka komputera. Nie powinno się samodzielnie usuwać istniejących indeksów tylko dlatego, że plan wykonania wygląda inaczej niż oczekiwano. Najpierw należy sprawdzić zależności, obciążenie systemu i kopię bezpieczeństwa. Indeks hybrydowy NCCI + Rowstore jest narzędziem do dopasowania dostępu do danych, dlatego najlepsze efekty daje wtedy, gdy jego zastosowanie wynika z pomiarów i rzeczywistych potrzeb użytkowanej bazy. |