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