Delen via


Historische gegevens beheren met bewaarbeleid

Belangrijk

Azure SQL Edge wordt op 30 september 2025 buiten gebruik gesteld. Zie de kennisgeving buitengebruikstelling voor meer informatie en migratieopties.

Notitie

Azure SQL Edge biedt geen ondersteuning meer voor het ARM64-platform.

Nadat het bewaarbeleid voor gegevens is gedefinieerd voor een database en de onderliggende tabel, wordt een timertaak voor achtergrondtijd uitgevoerd om verouderde records uit de tabel te verwijderen die zijn ingeschakeld voor gegevensretentie. Identificatie van overeenkomende rijen en het verwijderen van de tabel vindt transparant plaats, in de achtergrondtaak gepland en uitgevoerd door het systeem. Leeftijdsvoorwaarde voor de tabelrijen wordt gecontroleerd op basis van de filter_column kolom die is opgegeven in de tabeldefinitie. Als de bewaarperiode is ingesteld op één week, komen tabelrijen bijvoorbeeld in aanmerking voor opschoning aan een van de volgende voorwaarden:

  • Als in de filterkolom het gegevenstype DATETIMEOFFSET wordt gebruikt, is de voorwaarde filter_column < DATEADD(WEEK, -1, SYSUTCDATETIME())
  • Anders is de voorwaarde filter_column < DATEADD(WEEK, -1, SYSDATETIME())

Opschoonfasen voor gegevensretentie

De opschoonbewerking voor gegevensretentie bestaat uit twee fasen:

  1. Detectie: In deze fase identificeert de opschoningsbewerking alle tabellen in de gebruikersdatabases om een lijst te maken voor opschonen. Detectie wordt eenmaal per dag uitgevoerd.
  2. Opschonen: In deze fase wordt opschoning uitgevoerd voor alle tabellen met eindige gegevensretentie, geïdentificeerd in de detectiefase. Als de opschoonbewerking niet kan worden uitgevoerd op een tabel, wordt die tabel overgeslagen in de huidige uitvoering en wordt deze in de volgende iteratie opnieuw uitgevoerd. De volgende principes worden gebruikt tijdens het opschonen:
    • Als een verouderde rij is vergrendeld door een andere transactie, wordt die rij overgeslagen.
    • Opschonen wordt uitgevoerd met een standaardvergrendelingstime-out van 5 seconden. Als de vergrendelingen niet kunnen worden verkregen in de tabellen binnen het time-outvenster, wordt de tabel overgeslagen in de huidige uitvoering en wordt deze opnieuw geprobeerd in de volgende iteratie.
    • Als er een fout optreedt tijdens het opschonen van een tabel, wordt die tabel overgeslagen en in de volgende iteratie opgehaald.

Handmatig opschonen

Afhankelijk van de instellingen voor gegevensretentie in een tabel en de aard van de workload in de database, is het mogelijk dat de thread voor automatisch opschonen niet alle verouderde rijen tijdens de uitvoering volledig verwijdert. Om gebruikers toe te staan verouderde rijen handmatig te verwijderen, is de sys.sp_cleanup_data_retention opgeslagen procedure geïntroduceerd in Azure SQL Edge.

Deze opgeslagen procedure heeft drie parameters:

  • @schema_name: Naam van het schema dat eigenaar is voor de tabel. Vereist.
  • @table_name: Naam van de tabel waarvoor handmatige opschoning wordt uitgevoerd. Vereist.
  • @rowcount: Uitvoervariabele. Retourneert het aantal rijen dat is opgeschoond door de handmatige opschoning sp. Optioneel.

Zie sys.sp_cleanup_data_retention (Transact-SQL) voor meer informatie.

In het volgende voorbeeld ziet u de uitvoering van de handmatige opschoning sp voor de tabel dbo.data_retention_table.

DECLARE @rowcnt BIGINT;
EXEC sys.sp_cleanup_data_retention 'dbo', 'data_retention_table', @rowcnt OUTPUT;
SELECT @rowcnt;

Hoe verouderde rijen worden verwijderd

Het opschoonproces is afhankelijk van de indexindeling van de tabel. Er wordt een achtergrondtaak gemaakt om verouderde gegevens op te ruimen voor alle tabellen met een eindige bewaarperiode. Met het opschonen van logica voor de rijopslagindex (heap of B-boomstructuur) worden verouderde rijen verwijderd in kleinere segmenten (maximaal 10.000), waardoor de druk op het databaselogboek en het I/O-subsysteem wordt geminimaliseerd. Hoewel opschoonlogica gebruikmaakt van de vereiste B-tree-index, kan de volgorde van verwijderingen voor de rijen ouder dan de bewaarperiode niet stevig worden gegarandeerd. Met andere woorden, neem geen afhankelijkheid van de opschoonvolgorde in uw toepassingen.

Waarschuwing

In het geval van heaps- en B-tree-indexen voert gegevensretentie een verwijderquery uit op de onderliggende tabellen, wat kan conflicteren met verwijdertriggers in de tabellen. Verwijder triggers uit de tabellen of vermijd het gebruik van gegevensretentie in tabellen met DML-triggers.

Met de opschoningstaak voor de geclusterde columnstore-indexen worden hele rijgroepen tegelijk verwijderd (meestal 1 miljoen rijen per rij), wat efficiënt is, met name wanneer gegevens worden gegenereerd en verouderd in een hoog tempo.

Diagram van opschonen van gegevensretentie.

Uitstekende gegevenscompressie en efficiënte opschoning van retentie maakt geclusterde columnstore-indexen een perfecte keuze voor scenario's wanneer uw workload snel een grote hoeveelheid gegevens genereert.

Opschoning van gegevensretentie bewaken

Opschoonbewerkingen voor gegevensretentiebeleid kunnen worden bewaakt met behulp van uitgebreide gebeurtenissen in Azure SQL Edge. Zie Overzicht van uitgebreide gebeurtenissen voor meer informatie over uitgebreide gebeurtenissen.

Met de volgende uitgebreide gebeurtenissen kunt u de status van de opschoonbewerkingen bijhouden.

Name Beschrijving
data_retention_task_started Treedt op wanneer de achtergrondtaak voor het opschonen van tabellen met een bewaarbeleid wordt gestart.
data_retention_task_completed Treedt op wanneer de achtergrondtaak voor het opschonen van tabellen met een bewaarbeleid eindigt.
data_retention_task_exception Treedt op wanneer de achtergrondtaak voor het opschonen van tabellen met een bewaarbeleid mislukt, buiten het opschoningsproces voor retentie dat specifiek is voor deze tabellen.
data_retention_cleanup_started Treedt op wanneer het opschonen van een tabel met gegevensretentiebeleid wordt gestart.
data_retention_cleanup_exception Treedt op wanneer het opschoningsproces van een tabel met bewaarbeleid mislukt.
data_retention_cleanup_completed Treedt op wanneer het opschonen van een tabel met gegevensretentiebeleid eindigt.

Daarnaast is er een nieuw ringbuffertype met de naam RING_BUFFER_DATA_RETENTION_CLEANUP toegevoegd aan de sys.dm_os_ring_buffers dynamische beheerweergave. Deze weergave kan worden gebruikt om de opschoonbewerkingen voor gegevensretentie te bewaken.