Zarządzanie danymi historycznymi przy użyciu zasad przechowywania
Ważne
Usługa Azure SQL Edge zostanie wycofana 30 września 2025 r. Aby uzyskać więcej informacji i opcji migracji, zobacz powiadomienie o wycofaniu.
Uwaga
Usługa Azure SQL Edge nie obsługuje już platformy ARM64.
Po zdefiniowaniu zasad przechowywania danych dla bazy danych i tabeli bazowej zadanie czasomierza w tle jest uruchamiane w celu usunięcia wszelkich przestarzałych rekordów z tabeli włączonej na potrzeby przechowywania danych. Identyfikacja pasujących wierszy i ich usuwania z tabeli odbywa się w sposób niewidoczny, w zadaniu w tle zaplanowanym i uruchomionym przez system. Warunek wieku wierszy tabeli jest sprawdzany na filter_column
podstawie kolumny określonej w definicji tabeli. Jeśli okres przechowywania jest ustawiony na tydzień, na przykład wiersze tabeli kwalifikujące się do oczyszczenia spełniają jeden z następujących warunków:
- Jeśli kolumna filtru używa typu danych DATETIMEOFFSET, warunek to
filter_column < DATEADD(WEEK, -1, SYSUTCDATETIME())
- W przeciwnym razie warunek to
filter_column < DATEADD(WEEK, -1, SYSDATETIME())
Fazy oczyszczania przechowywania danych
Operacja oczyszczania przechowywania danych składa się z dwóch faz:
- Odnajdywanie: W tej fazie operacja oczyszczania identyfikuje wszystkie tabele w bazach danych użytkownika w celu utworzenia listy do czyszczenia. Odnajdywanie jest uruchamiane raz dziennie.
- Oczyszczanie: W tej fazie czyszczenie jest uruchamiane względem wszystkich tabel z skończonym przechowywaniem danych zidentyfikowanym w fazie odnajdywania. Jeśli nie można wykonać operacji oczyszczania w tabeli, ta tabela zostanie pominięta w bieżącym przebiegu i zostanie ponowiona w następnej iteracji. Podczas oczyszczania są używane następujące zasady:
- Jeśli przestarzały wiersz jest zablokowany przez inną transakcję, ten wiersz zostanie pominięty.
- Czyszczenie jest uruchamiane z domyślnym limitem czasu blokady 5 sekund. Jeśli blokady nie można uzyskać w tabelach w oknie limitu czasu, tabela zostanie pominięta w bieżącym przebiegu i zostanie ponowiona w następnej iteracji.
- Jeśli podczas czyszczenia tabeli wystąpi błąd, ta tabela zostanie pominięta i zostanie odebrana w następnej iteracji.
Czyszczenie ręczne
W zależności od ustawień przechowywania danych w tabeli i charakteru obciążenia w bazie danych możliwe jest, że wątek automatycznego czyszczenia może nie całkowicie usunąć wszystkich przestarzałych wierszy podczas jego uruchamiania. Aby umożliwić użytkownikom ręczne usuwanie przestarzałych wierszy, sys.sp_cleanup_data_retention
procedura składowana została wprowadzona w usłudze Azure SQL Edge.
Ta procedura składowana przyjmuje trzy parametry:
@schema_name
: nazwa schematu będąca właścicielem tabeli. Wymagany.@table_name
: nazwa tabeli, dla której jest uruchamiane czyszczenie ręczne. Wymagany.@rowcount
: zmienna wyjściowa. Zwraca liczbę wierszy wyczyszczonej przez funkcję czyszczenia ręcznego sp. Opcjonalny.
Aby uzyskać więcej informacji, zobacz sys.sp_cleanup_data_retention (Transact-SQL).
W poniższym przykładzie pokazano wykonanie ręcznego czyszczenia sp dla tabeli dbo.data_retention_table
.
DECLARE @rowcnt BIGINT;
EXEC sys.sp_cleanup_data_retention 'dbo', 'data_retention_table', @rowcnt OUTPUT;
SELECT @rowcnt;
Jak są usuwane przestarzałe wiersze
Proces oczyszczania zależy od układu indeksu tabeli. Zadanie w tle jest tworzone w celu wykonania przestarzałego czyszczenia danych dla wszystkich tabel z skończonym okresem przechowywania. Czyszczenie logiki dla indeksu magazynu wierszy (sterta lub drzewa B) usuwa przestarzałe wiersze w mniejszych fragmentach (do 10 000), minimalizując presję na dziennik bazy danych i podsystem we/wy. Mimo że logika oczyszczania korzysta z wymaganego indeksu drzewa B, kolejność usuwania wierszy starszych niż okres przechowywania nie może być gwarantowana. Innymi słowy, nie należy stosować zależności od kolejności oczyszczania w aplikacjach.
Ostrzeżenie
W przypadku indeksów szesnastek i indeksów drzewa B przechowywanie danych uruchamia zapytanie usuwania w podstawowych tabelach, które może powodować konflikt z wyzwalaczami usuwania w tabelach. Należy usunąć wyzwalacze usuwania z tabel lub unikać przechowywania danych w tabelach, które mają wyzwalacze DML.
Zadanie oczyszczania dla klastrowanych indeksów magazynu kolumn usuwa jednocześnie całe grupy wierszy (zazwyczaj zawierają 1 milion wierszy), co jest wydajne, szczególnie w przypadku generowania i starzenia się danych w wysokim tempie.
Doskonała kompresja danych i wydajne czyszczenie przechowywania sprawia, że klastrowane indeksy magazynu kolumn doskonale nadają się do scenariuszy, w których obciążenie szybko generuje dużą ilość danych.
Monitorowanie oczyszczania przechowywania danych
Operacje oczyszczania zasad przechowywania danych można monitorować przy użyciu zdarzeń rozszerzonych w usłudze Azure SQL Edge. Aby uzyskać więcej informacji na temat zdarzeń rozszerzonych, zobacz Omówienie zdarzeń rozszerzonych.
Następujące zdarzenia rozszerzone ułatwiają śledzenie stanu operacji oczyszczania.
Nazwa/nazwisko | opis |
---|---|
data_retention_task_started | Występuje, gdy rozpoczyna się zadanie w tle do czyszczenia tabel z zasadami przechowywania. |
data_retention_task_completed | Występuje, gdy zadanie w tle do czyszczenia tabel z zasadami przechowywania kończy się. |
data_retention_task_exception | Występuje, gdy zadanie w tle do czyszczenia tabel z zasadami przechowywania kończy się niepowodzeniem, poza procesem oczyszczania przechowywania specyficznym dla tych tabel. |
data_retention_cleanup_started | Występuje, gdy rozpoczyna się proces oczyszczania tabeli z zasadami przechowywania danych. |
data_retention_cleanup_exception | Występuje, gdy proces oczyszczania tabeli z zasadami przechowywania kończy się niepowodzeniem. |
data_retention_cleanup_completed | Występuje po zakończeniu procesu oczyszczania tabeli z zasadami przechowywania danych. |
Ponadto nowy typ buforu pierścienia o nazwie RING_BUFFER_DATA_RETENTION_CLEANUP
został dodany do dynamicznego sys.dm_os_ring_buffers
widoku zarządzania. Ten widok może służyć do monitorowania operacji oczyszczania przechowywania danych.