Správa historických dat pomocí zásad uchovávání informací
Důležité
Azure SQL Edge bude vyřazeno 30. září 2025. Další informace a možnosti migrace najdete v oznámení o vyřazení.
Poznámka:
Azure SQL Edge už nepodporuje platformu ARM64.
Po definování zásad uchovávání dat pro databázi a podkladovou tabulku se spustí úloha časovače na pozadí, která odebere všechny zastaralé záznamy z tabulky povolené pro uchovávání dat. Identifikace odpovídajících řádků a jejich odebrání z tabulky probíhá transparentně, v úlohu na pozadí naplánované a spuštěné systémem. Věková podmínka pro řádky tabulky se kontroluje na filter_column
základě sloupce zadaného v definici tabulky. Pokud je doba uchovávání nastavená na jeden týden, například řádky tabulky, které mají nárok na vyčištění, splňují některou z následujících podmínek:
- Pokud sloupec filtru používá datový typ DATETIMEOFFSET, podmínka je
filter_column < DATEADD(WEEK, -1, SYSUTCDATETIME())
- Jinak je podmínka
filter_column < DATEADD(WEEK, -1, SYSDATETIME())
Fáze čištění uchovávání dat
Operace čištění uchovávání dat se skládá ze dvou fází:
- Zjišťování: V této fázi operace čištění identifikuje všechny tabulky v uživatelských databázích, aby se vytvořil seznam pro vyčištění. Zjišťování se spouští jednou denně.
- Vyčištění: V této fázi se vyčištění spustí pro všechny tabulky s konečným uchováváním dat identifikovaným ve fázi zjišťování. Pokud operaci vyčištění nelze provést v tabulce, pak se tato tabulka přeskočí v aktuálním spuštění a bude se opakovat v další iteraci. Během čištění se používají následující principy:
- Pokud je zastaralý řádek uzamčen jinou transakcí, tento řádek se přeskočí.
- Vyčištění se spustí s výchozím časovým limitem uzamčení 5 sekund. Pokud zámky nelze získat v tabulkách v okně časového limitu, tabulka se přeskočí v aktuálním spuštění a bude se opakovat v další iteraci.
- Pokud při vyčištění tabulky dojde k chybě, tato tabulka se přeskočí a vyzvedne se v další iteraci.
Ruční vyčištění
V závislosti na nastavení uchovávání dat v tabulce a povaze úlohy v databázi je možné, že vlákno automatického čištění nemusí během spuštění úplně odebrat všechny zastaralé řádky. Aby uživatelé mohli ručně odebrat zastaralé řádky, sys.sp_cleanup_data_retention
byla uložená procedura zavedena v Azure SQL Edge.
Tato uložená procedura má tři parametry:
@schema_name
: Název vlastnícího schématu pro tabulku. Povinný:@table_name
: Název tabulky, pro kterou se spouští ruční vyčištění. Povinný:@rowcount
: Výstupní proměnná. Vrátí počet řádků vyčištěných ručním vyčištěním sp. Nepovinné.
Další informace najdete v tématu sys.sp_cleanup_data_retention (Transact-SQL).
Následující příklad ukazuje spuštění ruční vyčištění sp pro tabulku dbo.data_retention_table
.
DECLARE @rowcnt BIGINT;
EXEC sys.sp_cleanup_data_retention 'dbo', 'data_retention_table', @rowcnt OUTPUT;
SELECT @rowcnt;
Odstranění zastaralých řádků
Proces čištění závisí na rozložení indexu tabulky. Vytvoří se úloha na pozadí, která provede zastaralé vyčištění dat pro všechny tabulky s konečným obdobím uchovávání. Vyčistit logiku indexu úložiště řádků (haldy nebo B-tree) odstraní zastaralou řadu v menších blocích (až 10 000), což minimalizuje tlak na protokol databáze a subsystém vstupně-výstupní operace. I když logika čištění využívá požadovaný index stromu B, pořadí odstranění řádků starších než doba uchovávání není možné pevně zaručit. Jinými slovy, nezabíjejte závislost na pořadí čištění ve vašich aplikacích.
Upozorňující
V případě indexů hald a B-tree spustí uchovávání dat v podkladových tabulkách odstraňovací dotaz, který může být v konfliktu s aktivačními událostmi odstranění v tabulkách. Z tabulek byste měli buď odebrat aktivační události odstranění, nebo se vyhnout použití uchovávání dat u tabulek, které obsahují aktivační události DML.
Úloha vyčištění pro clusterované indexy columnstore odebere celé skupiny řádků najednou (obvykle obsahují 1 milion řádků), což je efektivní, zejména v případě, že se data generují a stárnou vysokým tempem.
Díky vynikající kompresi dat a efektivnímu čištění uchovávání dat je clusterované indexy columnstore ideální volbou pro scénáře, kdy vaše úloha rychle generuje velké množství dat.
Monitorování čištění uchovávání dat
Operace čištění zásad uchovávání dat je možné monitorovat pomocí rozšířených událostí v Azure SQL Edge. Další informace o rozšířených událostech najdete v tématu Přehled rozšířených událostí.
Následující rozšířené události pomáhají sledovat stav operací čištění.
Název | Popis |
---|---|
data_retention_task_started | Nastane, když se spustí úloha na pozadí pro vyčištění tabulek pomocí zásad uchovávání informací. |
data_retention_task_completed | Nastane, když úloha na pozadí pro vyčištění tabulek se zásadou uchovávání informací skončí. |
data_retention_task_exception | Nastane, když úloha na pozadí pro vyčištění tabulek se zásadou uchovávání informací selže, mimo proces čištění uchovávání informací specifický pro tyto tabulky. |
data_retention_cleanup_started | Nastane, když se spustí proces čištění tabulky se zásadami uchovávání dat. |
data_retention_cleanup_exception | Nastane, když proces čištění tabulky se zásadou uchovávání informací selže. |
data_retention_cleanup_completed | Nastane, když proces čištění tabulky se zásadami uchovávání dat skončí. |
Kromě toho byl do zobrazení dynamické správy přidán nový typ vyrovnávací paměti okruhu sys.dm_os_ring_buffers
s názvemRING_BUFFER_DATA_RETENTION_CLEANUP
. Toto zobrazení lze použít k monitorování operací čištění uchovávání dat.