Előzményadatok kezelése adatmegőrzési szabályzattal
Fontos
Az Azure SQL Edge 2025. szeptember 30-án megszűnik. További információkért és a migrálási lehetőségekért tekintse meg a kivonásról szóló közleményt.
Feljegyzés
Az Azure SQL Edge már nem támogatja az ARM64 platformot.
Miután definiálta az adatmegőrzési szabályzatot egy adatbázishoz és a mögöttes táblához, egy háttéridőzítő feladat fut, amely eltávolítja az adatmegőrzésre engedélyezett táblából az elavult rekordokat. Az egyező sorok azonosítása és a táblából való eltávolítása transzparens módon történik a rendszer által ütemezett és futtatott háttérfeladatban. A táblasorok korfeltételét a filter_column
tábladefinícióban megadott oszlop alapján ellenőrzi a rendszer. Ha a megőrzési idő egy hétre van állítva, például a törlésre jogosult táblasorok megfelelnek az alábbi feltételek valamelyikének:
- Ha a szűrőoszlop DATETIMEOFFSET adattípust használ, akkor a feltétel a következő:
filter_column < DATEADD(WEEK, -1, SYSUTCDATETIME())
- Ellenkező esetben a feltétel
filter_column < DATEADD(WEEK, -1, SYSDATETIME())
Adatmegőrzési tisztítási fázisok
Az adatmegőrzési tisztítási művelet két fázisból áll:
- Felderítés: Ebben a fázisban a törlési művelet azonosítja a felhasználói adatbázisokban lévő összes táblát, hogy listát állítsunk össze a törléshez. A felderítés naponta egyszer fut.
- Törlés: Ebben a fázisban a rendszer a törlést a felderítési fázisban azonosított véges adatmegőrzéssel rendelkező táblákon futtatja. Ha a törlési művelet nem hajtható végre egy táblán, akkor a rendszer kihagyja a táblát az aktuális futtatás során, és a következő iterációban újra próbálkozik. A törlés során a következő alapelveket alkalmazzuk:
- Ha egy elavult sort egy másik tranzakció zárol, a rendszer kihagyja a sort.
- A törlés 5 másodperces alapértelmezett zárolási időtúllépéssel fut. Ha a zárolások nem szerezhetők be a táblákon az időtúllépési ablakban, a rendszer kihagyja a táblát az aktuális futtatás során, és a következő iterációban újra próbálkozik.
- Ha hiba történik egy tábla törlése során, a rendszer kihagyja a táblát, és a rendszer a következő iterációban fogja átvenni.
Manuális törlés
A tábla adatmegőrzési beállításaitól és az adatbázis számítási feladatainak jellegétől függően előfordulhat, hogy az automatikus törlési szál futása során nem távolítja el teljesen az összes elavult sort. Annak érdekében, hogy a felhasználók manuálisan eltávolítsák az elavult sorokat, bevezettük a sys.sp_cleanup_data_retention
tárolt eljárást az Azure SQL Edge-ben.
Ez a tárolt eljárás három paramétert vesz igénybe:
@schema_name
: A tábla tulajdonosi sémájának neve. Szükséges.@table_name
: Annak a táblának a neve, amelynek manuális tisztítása folyamatban van. Szükséges.@rowcount
: Kimeneti változó. A manuális törlési sp által megtisztított sorok számát adja vissza. Opcionális.
További információ: sys.sp_cleanup_data_retention (Transact-SQL).
Az alábbi példa a tábla dbo.data_retention_table
manuális törlési spének végrehajtását mutatja be.
DECLARE @rowcnt BIGINT;
EXEC sys.sp_cleanup_data_retention 'dbo', 'data_retention_table', @rowcnt OUTPUT;
SELECT @rowcnt;
Elavult sorok törlése
A törlési folyamat a tábla indexelrendezésétől függ. Létrejön egy háttérfeladat, amely elavult adattisztítást végez az összes olyan táblánál, amelynek véges megőrzési ideje van. A rowstore (halom vagy B-fa) index törlési logikája kisebb adattömbökben (legfeljebb 10 000) törli az elöregedett sorokat, ezzel minimalizálva az adatbázisnaplóra és az I/O-alrendszerre nehezedő nyomást. Bár a törlési logika a szükséges B-fa indexet használja, a megőrzési időnél régebbi sorok törlési sorrendje nem garantálható biztosan. Más szóval, ne függjön az alkalmazások törlési sorrendjét.
Figyelmeztetés
Halmok és B-fa indexek esetén az adatmegőrzés egy törlési lekérdezést futtat az alapul szolgáló táblákon, amely ütközhet a táblák törlési eseményindítóival. Távolítsa el a törlési eseményindítókat a táblákból, vagy kerülje az adatmegőrzés használatát a DML-eseményindítókat tartalmazó táblákon.
A fürtözött oszlopcentrikus indexek tisztítási feladata egyszerre eltávolítja a teljes sorcsoportokat (általában egyenként 1 millió sort tartalmaz), ami hatékony, különösen akkor, ha adatok jönnek létre, és nagy ütemben öregednek.
A kiváló adattömörítés és a hatékony adatmegőrzési karbantartás tökéletes választássá teszi a fürtözött oszlopcentrikus indexeket olyan helyzetekben, amikor a számítási feladat gyorsan nagy mennyiségű adatot hoz létre.
Adatmegőrzési törlés monitorozása
Az adatmegőrzési szabályzatok törlési műveletei az Azure SQL Edge bővített eseményeinek használatával figyelhetők meg. A kiterjesztett eseményekről további információt a Bővített események áttekintése című témakörben talál.
Az alábbi bővített események segítenek nyomon követni a tisztítási műveletek állapotát.
Név | Leírás |
---|---|
data_retention_task_started | Akkor fordul elő, amikor elindul a megőrzési szabályzattal rendelkező táblák törlésének háttérfeladata. |
data_retention_task_completed | Akkor fordul elő, ha a megőrzési szabályzattal rendelkező táblák törlésének háttérfeladata véget ér. |
data_retention_task_exception | Akkor fordul elő, ha a megőrzési szabályzattal rendelkező táblák törlésének háttérfeladata meghiúsul az adott táblákra vonatkozó megőrzési tisztítási folyamaton kívül. |
data_retention_cleanup_started | Egy adatmegőrzési szabályzattal rendelkező tábla törlési folyamata indul el. |
data_retention_cleanup_exception | Akkor fordul elő, ha egy adatmegőrzési szabályzattal rendelkező tábla tisztítási folyamata meghiúsul. |
data_retention_cleanup_completed | Akkor fordul elő, ha egy adatmegőrzési szabályzattal rendelkező tábla törlési folyamata véget ér. |
Emellett egy új, elnevezett gyűrűpuffertípus lett hozzáadva RING_BUFFER_DATA_RETENTION_CLEANUP
a sys.dm_os_ring_buffers
dinamikus felügyeleti nézethez. Ez a nézet az adatmegőrzési tisztítási műveletek figyelésére használható.