| Termin | Definicja |
|---|---|
| Hekaton | Hekaton to wewnętrzna nazwa kodowa technologii In-Memory OLTP wprowadzonej w SQL Server 2014. Hekaton jako technologia przetwarzania danych w pamięciHekaton to nazwa kodowa mechanizmów In-Memory OLTP, czyli sposobu obsługi wybranych tabel i procedur składowanych z wykorzystaniem pamięci operacyjnej jako głównego miejsca pracy. Technologia została wprowadzona w SQL Server 2014 i powstała z myślą o skróceniu czasu wykonywania operacji, które w tradycyjnym modelu wymagały częstego odczytu oraz zapisu stron danych na dysku. Nie jest to osobny system bazodanowy ani zamiennik całego SQL Server. Stanowi zestaw funkcji dostępnych w określonych edycjach i konfiguracjach platformy. W klasycznym modelu tabela jest przechowywana w strukturach zarządzanych przez silnik dyskowy. Dane są pobierane do buforów, modyfikowane, a następnie zapisywane zgodnie z zasadami trwałości transakcji. Hekaton stosuje inny sposób organizacji danych. Tabele zoptymalizowane pod kątem pamięci są utrzymywane w pamięci operacyjnej, a silnik ogranicza koszty związane z blokadami, stronami danych oraz częścią mechanizmów pośredniczących w dostępie do zwykłych tabel. Pamięć nie zastępuje trwałości, ponieważ SQL Server wykorzystuje pliki kontrolne oraz dziennik transakcji do odtworzenia stanu po ponownym uruchomieniu. Znaczenie nazwy Hekaton wiąże się z ideą bardzo dużej przepustowości. W praktyce uzyskany efekt zależy jednak od charakteru obciążenia, rozmiaru danych, dostępnej pamięci, modelu transakcji i poprawnego projektu tabeli. Sama zmiana tabeli na zoptymalizowaną pod kątem pamięci nie gwarantuje przyspieszenia. Największe korzyści pojawiają się wtedy, gdy aplikacja wykonuje wiele krótkich operacji, często odwołuje się do tych samych rekordów i traci dużo czasu na blokowanie albo oczekiwanie na operacje wejścia i wyjścia. Hekaton a klasyczne tabele i porównanie modeli pracyNajważniejsza różnica między tabelą zoptymalizowaną pod kątem pamięci a zwykłą tabelą dotyczy sposobu zarządzania współbieżnością. W typowym modelu relacyjnym blokady mogą powodować, że jedna transakcja czeka na zakończenie innej. Przy dużej liczbie równoległych żądań oczekiwanie staje się widoczne jako spadek przepustowości. Hekaton wykorzystuje mechanizmy kontroli wersji oraz podejście określane jako optymistyczne zarządzanie współbieżnością. Transakcja wykonuje pracę bez zakładania wielu tradycyjnych blokad, a przy zatwierdzaniu sprawdzana jest możliwość zachowania spójności. W zwykłej tabeli indeks klastrowany i indeksy pomocnicze są zorganizowane w sposób dostosowany do pracy z danymi przechowywanymi na stronach. W tabelach zoptymalizowanych pod kątem pamięci stosuje się inne rodzaje indeksów, między innymi indeksy haszujące oraz indeksy zakresowe. Indeks haszujący może być bardzo skuteczny przy wyszukiwaniu dokładnej wartości klucza, na przykład identyfikatora. Indeks zakresowy lepiej odpowiada zapytaniom wykorzystującym sortowanie, przedziały wartości i porównania większe lub mniejsze. Dobór indeksu powinien wynikać z rzeczywistych zapytań, a nie tylko z deklarowanego rozmiaru tabeli. Istotnym elementem są procedury składowane natively compiled, czyli kompilowane w sposób dostosowany do pracy z tabelami zoptymalizowanymi pod kątem pamięci. Mogą one ograniczyć koszt interpretowania instrukcji przy bardzo częstym wykonywaniu niewielkich operacji. Jednocześnie mają własny zakres obsługiwanych konstrukcji języka T-SQL. Zapytanie działające dla zwykłej tabeli nie musi więc nadawać się do bezpośredniego przeniesienia do procedury tego typu. Przed migracją należy sprawdzić używane funkcje, typy danych, wyrażenia, instrukcje i sposób obsługi błędów. W porównaniu z klasycznym mechanizmem buforowania Hekaton ogranicza zależność wydajności od szybkości dysku podczas bieżącej pracy, lecz zwiększa wymagania wobec pamięci. Jeżeli pamięć jest niewystarczająca, korzyści mogą zniknąć, a zarządzanie środowiskiem stanie się trudniejsze. Dlatego wybór tego modelu powinien być poprzedzony pomiarem obciążenia, obserwacją oczekiwań, analizą planów zapytań i oceną dostępnych zasobów. Hekaton i typowe problemy wdrożenioweJednym z częstych problemów jest założenie, że każda tabela przechowywana w pamięci będzie działać szybciej. Hekaton najlepiej pasuje do tabel o intensywnym odczycie i zapisie, krótkich transakcjach oraz przewidywalnych ścieżkach dostępu. Tabela używana głównie do rozbudowanych analiz, wieloetapowych połączeń i okresowych zestawień może nie przynieść oczekiwanej poprawy. W takich przypadkach ważniejsze mogą okazać się poprawa indeksów, zmiana zapytań, uporządkowanie statystyk lub ograniczenie niepotrzebnie pobieranych kolumn. Drugim problemem jest brak odpowiedniego planu dla pamięci. Dane tabel zoptymalizowanych pod kątem pamięci oraz ich indeksy zajmują zasoby, a zapotrzebowanie może rosnąć wraz z liczbą rekordów. Należy uwzględnić także kopie wersji rekordów wynikające z równoległych transakcji. Krótkotrwały wzrost aktywności może zwiększyć zużycie pamięci bardziej, niż wynikałoby to z samej liczby zapisanych wierszy. Monitorowanie powinno obejmować zarówno bieżące obciążenie, jak i przewidywany przyrost danych. Ograniczenia funkcjonalne mogą pojawić się przy migracji. Nie wszystkie typy danych, operatory, wyzwalacze, relacje i konstrukcje T-SQL są obsługiwane w takim samym zakresie jak dla tabel tradycyjnych. Znaczenie ma także wersja SQL Server oraz używana edycja. Przed wykonaniem zmiany należy przygotować listę zależności, sprawdzić procedury odwołujące się do tabeli i wykonać testy na kopii danych. Szczególnie ważne jest sprawdzenie procesów importu, raportowania, archiwizacji i odtwarzania po awarii. Problemy może powodować również nieprawidłowy dobór indeksu haszującego. Jego działanie zależy od liczby koszyków oraz rozkładu wartości klucza. Zbyt mała liczba koszyków prowadzi do większej liczby kolizji, a zbyt duża niepotrzebnie zużywa pamięć. Indeks zakresowy nie ma tego samego modelu działania i powinien być wybierany wtedy, gdy zapytania korzystają z przedziałów, kolejności lub częściowych dopasowań. Wymaga to analizy wzorców zapytań, a nie mechanicznego kopiowania indeksów z tabeli tradycyjnej. Hekaton w praktyce: przygotowanie, testy i wskazówkiPrzygotowanie do użycia Hekaton warto rozpocząć od zebrania danych pomiarowych. Należy ustalić, które zapytania są wykonywane najczęściej, gdzie występują oczekiwania, jaki jest udział operacji odczytu i zapisu oraz jak zmienia się obciążenie w czasie. Pomocne jest porównanie czasu wykonania, liczby operacji na sekundę, zużycia procesora, wykorzystania pamięci i liczby konfliktów transakcyjnych. Bez punktu odniesienia trudno ocenić, czy zmiana rzeczywiście rozwiązała problem. Przy projektowaniu tabeli trzeba zwrócić uwagę na klucze, indeksy, długość wiersza i typy danych. Warto unikać przechowywania w pamięci informacji, które nie muszą być stale dostępne w szybkim modelu. Dane historyczne, rzadko używane załączniki oraz obszerne obiekty tekstowe mogą lepiej pasować do innych struktur. Podział danych według okresu, statusu lub częstości użycia może ograniczyć ilość pamięci wymaganą przez najbardziej aktywną część systemu. Testy powinny obejmować nie tylko pojedyncze zapytania, lecz także zachowanie przy wielu równoległych użytkownikach. Należy sprawdzić zatwierdzanie i wycofywanie transakcji, konflikty, restart usługi, odtwarzanie kopii oraz zachowanie podczas braku części zasobów. Warto przetestować także operacje administracyjne, takie jak zmiana schematu, przebudowa aplikacji korzystającej z tabeli i aktualizacja wersji SQL Server. Test wykonany na małej próbce może nie ujawnić problemów widocznych dopiero przy większej liczbie rekordów. Praktyczna zasada polega na stopniowym wprowadzaniu zmian. Najpierw można wydzielić niewielki, dobrze rozpoznany fragment obciążenia, a następnie obserwować wyniki. Jeżeli wzrost przepustowości jest zauważalny, można rozszerzać zakres migracji. Gdy poprawa nie występuje, analiza pomiarów pozwala wrócić do indeksów, zapytań, struktury transakcji albo organizacji danych. Dzięki temu Hekaton jest traktowany jako narzędzie dopasowane do konkretnego problemu, a nie jako uniwersalna metoda przyspieszania każdej bazy. Hekaton i moment zgłoszenia problemu do serwisuDo serwisu warto zgłosić się wtedy, gdy komputer wykorzystywany do pracy z SQL Server zaczyna wyraźnie zwalniać, przerywa operacje, samoczynnie się restartuje albo zgłasza błędy pamięci masowej. Nie zawsze źródłem problemu jest sama baza. Przyczyną może być przegrzewanie podzespołów, niestabilna pamięć operacyjna, uszkodzenie dysku, nieaktualne sterowniki, błędna konfiguracja systemu lub niewłaściwe ustawienia zasilania. Diagnostyka sprzętu powinna zostać połączona z analizą logów systemowych i opisem momentu występowania problemu. Przed przekazaniem urządzenia dobrze przygotować kopię ważnych danych, listę ostatnich zmian oraz informację o tym, czy trudność pojawia się przy uruchamianiu, wykonywaniu zapytań, tworzeniu kopii lub większej liczbie jednoczesnych operacji. Takie informacje ułatwiają oddzielenie problemu sprzętowego od błędu konfiguracji aplikacji. Nie należy usuwać dzienników ani zmieniać ustawień bez zapisania stanu wyjściowego, ponieważ może to utrudnić późniejsze ustalenie przyczyny. Warszawskie Pogotowie Komputerowe 24/7 zajmuje się diagnostyką i naprawą laptopów oraz komputerów PC, dlatego można przekazać sprzęt do sprawdzenia, gdy objawy związane z pracą środowiska bazodanowego wskazują na usterkę urządzenia. W przypadku laptopa diagnoza jest bezpłatna. Przed rozpoczęciem naprawy warto opisać objawy, sposób wykorzystywania komputera oraz znaczenie przechowywanych danych, aby zakres czynności został dobrany do rzeczywistej sytuacji. Jeżeli problem dotyczy wyłącznie projektu bazy, zapytań albo zgodności funkcji SQL Server, potrzebna może być konsultacja osoby odpowiedzialnej za administrację i rozwój aplikacji. Jeżeli jednak pojawiają się objawy fizyczne, niestabilność systemu, błędy dysku lub nagłe wyłączenia, sprawdzenie komputera pomaga wykluczyć podstawowe przyczyny sprzętowe. Takie rozdzielenie odpowiedzialności ułatwia bezpieczną ocenę, czy dalszych działań wymaga konfiguracja Hekaton, oprogramowanie, czy sam komputer. |