Megosztás a következőn keresztül:


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:

  1. 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.
  2. 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_tablemanuá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.

Az adatmegőrzési törlés diagramja.

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ó.