Udostępnij za pośrednictwem


Wydajność systemowej wersjonowanej tabeli czasowej zoptymalizowanej pod kątem pamięci

Dotyczy: SQL Server 2016 (13.x) i nowszych azure SQL Managed Instance

W tym artykule omówiono niektóre konkretne zagadnienia dotyczące wydajności podczas korzystania z tabel czasowych zoptymalizowanych pod kątem pamięci w wersji systemowej.

Podczas dodawania wersjonowania systemowego do istniejącej tabeli nietemporalnej, należy spodziewać się wpływu na wydajność operacji aktualizacji i usuwania, ponieważ tabela historii jest aktualizowana automatycznie.

Zagadnienia dotyczące wydajności

Każda aktualizacja i usunięcie są rejestrowane w wewnętrznej tabeli historii zoptymalizowanej pod kątem pamięci. Może wystąpić nieoczekiwane użycie pamięci, jeśli obciążenie korzysta z tych dwóch operacji masowo. W związku z tym zalecamy następujące zagadnienia:

  • Nie wykonuj masowych usunięć z bieżącej tabeli na raz. Rozważ usuwanie danych w wielu partiach, z ręcznie wywoływanym czyszczeniem danych między nimi za pomocą sp_xtp_flush_temporal_history, lub podczas SYSTEM_VERSIONING = OFF.

  • Nie przeprowadzaj masywnych operacji aktualizacji tabel na raz, ponieważ może to skutkować konsumpcją do dwóch razy więcej pamięci niż wymagana do zaktualizowania tabeli zoptymalizowanej pod kątem pamięci nietymporalnej. To podwojone zużycie pamięci jest tymczasowe, ponieważ zadanie czyszczenia danych działa regularnie w celu utrzymania zużycia pamięci wewnętrznych tabel przejściowych w przewidywanych granicach w stanie stabilnym. Granica to 10 procent użycia pamięci bieżącej tabeli czasowej. Rozważ wykonanie masowych aktualizacji w kilku partiach lub podczas SYSTEM_VERSIONING = OFF, na przykład używając aktualizacji do ustawienia wartości domyślnych dla nowo dodanych kolumn.

Okres aktywacji zadania opróżniania danych nie jest konfigurowalny, ale można ręcznie wykonać sp_xtp_flush_temporal_history zgodnie z potrzebami.

Rozważ użycie klastrowanego indeksu kolumnowego jako opcji przechowywania dla tabeli historii opartej na bazie danych dyskowej, zwłaszcza jeśli planujesz uruchamiać zapytania analityczne dotyczące danych historycznych, które korzystają z funkcji agregacji lub okienkowania. W takim przypadku indeks magazynu kolumn z klastrowaniem jest optymalnym wyborem dla tabeli historii. Klastrowane indeksy magazynu kolumn zapewniają dobrą kompresję danych i zachowują się w sposób przyjazny dla wstawiania, zgodnie z sposobem generowania danych historii.