sys.sp_persistent_version_cleanup (Transact-SQL)

Van toepassing op: SQL Server 2019 (15.x) en latere versies Van Azure SQL DatabaseAzure SQL Managed InstanceSQL Database in Microsoft Fabric

Hiermee start u handmatig het opschonen van permanente versieopslag (PVS), een belangrijk element van versneld databaseherstel (ADR). De reiniger verwijdert verouderde rijversies uit de PVS-opslag in de rij en uit de rij en verwijdert ook niet-doorgevoerde wijzigingen in PVS uit afgebroken transacties.

Het is doorgaans niet nodig om het PVS-opschoonproces handmatig te starten met behulp van sys.sp_persistent_version_cleanup. In sommige scenario's wilt u het PVS-opschoonproces echter handmatig starten tijdens een bekende periode van rust/herstel na bezet OLTP-activiteit.

Zie Versneld databaseherstelvoor meer informatie over ADR.

Transact-SQL syntaxisconventies

Syntaxis

sys.sp_persistent_version_cleanup
    [ [ @dbname = ] N'dbname' ]
    [ , [ @scanallpages = ] scanallpages ]
    [ , [ @clean_option = ] clean_option ]
[ ; ]

Argumenten

[ @dbname = ] N'dbname'

Facultatief. De naam van de database die moet worden opgeschoond. Als deze niet is opgegeven, gebruikt u de huidige databasecontext. @dbname is sysname, met een standaardwaarde van NULL.

[ @scanallpages = ] scanallpagina's

Facultatief. @scanallpages is bit, met een standaardwaarde van 0. Als deze optie is ingesteld op 1, worden met deze optie alle databasepagina's opgeschoond, zelfs als deze niet zijn geversied.

[ @clean_option = ] clean_option

Facultatief. De optie om te bepalen welk type opschoning moet worden uitgevoerd. @clean_option is int, met een standaardwaarde van 0. Deze parameter is niet vaak nodig en de standaardwaarde 0 wordt aanbevolen.

Waarde Beschrijving
0 Standaard voert u alle opschoning uit.
1 Schoon de opslag van de off-row-versie op zonder de inhoud van de PVS-pagina te controleren. Sneller, maar kan de toewijzing van ongebruikte pagina's in PVS overslaan. Dit is het standaardgedrag wanneer @clean_option dit wordt weggelaten of ingesteld op 0.
2 Schoon de opslag van de off-row-versie op door de inhoud van elke PVS-pagina te controleren. Langzamer, maar de toewijzing van alle ongebruikte pagina's wordt altijd ongedaan gemaakt.
3 Alleen de opslag in rijversie opschonen .
4 Rijversies opschonen die worden gegenereerd door alleen afgebroken transacties (ook wel logisch terugkeren genoemd).

Codewaarden retourneren

0 (geslaagd) of 1 (mislukt).

Resultatenset

Geen.

Machtigingen

Vereist de ALTER machtiging voor de database.

Opmerkingen

De sys.sp_persistent_version_cleanup opgeslagen procedure is synchroon, wat betekent dat deze pas wordt voltooid als alle versiegegevens worden opgeschoond uit de huidige PVS.

In SQL Server 2019 (15.x) wordt het PVS-opschoonproces alleen uitgevoerd voor één database tegelijk. In Azure SQL Database en Azure SQL Managed Instance, en vanaf SQL Server 2022 (16.x), kan het PVS-opschoonproces parallel worden uitgevoerd op meerdere databases in hetzelfde exemplaar.

Als het PVS-opschoonproces al wordt uitgevoerd voor de gewenste database, wordt deze opgeslagen procedure geblokkeerd voordat een ander PVS-opschoonproces wordt gestart. Actieve, langlopende transacties in elke database op hetzelfde exemplaar van de database-engine waarvoor ADR is ingeschakeld, kunnen ook PVS-opschoning blokkeren.

U kunt de versiereinigerstaak controleren door te zoeken naar het proces met de volgende voorbeeldquery:

SELECT *
FROM sys.dm_exec_requests
WHERE command LIKE '%PERSISTED_VERSION_CLEANER%';

Een actieve transactie kan verhinderen dat het PVS-opschoonproces wordt gestart. Als dit gebeurt, wacht de sessie waarop de sys.sp_persistent_version_cleanup opgeslagen procedure wordt uitgevoerd met het PVS_CLEANUP_LOCK wachttype. U kunt wachten tot de transactie is voltooid of u kunt overwegen om de blokkersessie te beëindigen met een actieve transactie, indien mogelijk.

Het opschonen van PVS dat is geïnitieerd, sys.sp_persistent_version_cleanup kan langer duren wanneer automatische indexcompressie is ingeschakeld. Als u PVS-opschoning wilt versnellen die door deze opgeslagen procedure is geïnitieerd, kunt u overwegen om automatische indexcompressie tijdelijk uit te schakelen .

Als ADR is uitgeschakeld, voert u sys.sp_persistent_version_cleanup uit om eerdere versies nog steeds in de PVS op te schonen.

Voorbeelden

Als u het PVS-opschoonproces handmatig wilt activeren tussen werkbelastingen of tijdens onderhoudsvensters, gebruikt u het volgende voorbeeldscript:

EXECUTE sys.sp_persistent_version_cleanup [database_name];

Bijvoorbeeld:

EXECUTE sys.sp_persistent_version_cleanup [WideWorldImporters];

U kunt ook uitgaan van de huidige databasecontext:

Note

In Azure SQL Database en SQL Database in Microsoft Fabric is de USE instructie niet beschikbaar. Maak in plaats daarvan direct verbinding met de beoogde database en voer de rest van het codevoorbeeld uit.

USE [WideWorldImporters];
GO

EXECUTE sys.sp_persistent_version_cleanup;