Delen via


sys.dm_db_xtp_checkpoint_files (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Toont informatie over In-Memory OLTP-checkpointbestanden, inclusief bestandsgrootte, fysieke locatie en de transactie-ID.

Opmerking

Voor het huidige checkpoint dat niet gesloten is, zal de statuskolom van sys.dm_db_xtp_checkpoint_files IN AANBOUW zijn voor nieuwe bestanden. Een checkpoint sluit automatisch wanneer er voldoende groei is in het transactielog sinds het laatste checkpoint, of als je het CHECKPOINT commando geeft. Zie CHECKPOINT (Transact-SQL)voor meer informatie.

Een geheugengeoptimaliseerde bestandsgroep gebruikt intern append-only bestanden om ingevoegde en verwijderde rijen op te slaan voor in-memory tabellen. Er zijn twee soorten bestanden. Een databestand bevat ingevoegde rijen, terwijl een deltabestand verwijzingen bevat naar verwijderde rijen.

SQL Server 2014 (12.x) verschilt aanzienlijk van recentere versies en wordt besproken in SQL Server 2014.

Voor meer informatie, zie Opslag aanmaken en beheren voor Memory-Optimized objecten.

SQL Server 2016 (13.x) en later

De volgende tabel beschrijft de kolommen voor sys.dm_db_xtp_checkpoint_files, beginnend met SQL Server 2016 (13.x).

Kolomnaam Typologie Description
container_id int De ID van de container (weergegeven als een bestand met het type FILESTREAM in sys.database_files) waarvan het data- of deltabestand deel uitmaakt. Sluit zich aan bij file_id in sys.database_files (Transact-SQL).
container_guid uniqueidentifier GUID van de container, waarvan het root-, data- of deltabestand deel uitmaakt. Voegt zich aan in file_guid de sys.database_files tabel.
checkpoint_file_id uniqueidentifier GUID van het checkpointbestand.
relative_file_path nvarchar(256) Het pad van het bestand ten opzichte van de container waaraan het wordt toegewezen.
file_type smallint -1 GRATIS

0 voor het DATA-bestand.

1 voor het DELTA-bestand.

2 voor ROOT-bestand

3 voor LARGE DATA-bestand
bestandstypebeschrijving nvarchar(60) GRATIS - Alle bestanden die als GRATIS worden onderhouden, zijn beschikbaar voor toewijzing. Gratis bestanden kunnen in grootte variëren afhankelijk van de verwachte behoeften van het systeem. De maximale grootte is 1 GB.

DATA - Databestanden bevatten rijen die zijn ingevoegd in geheugengeoptimaliseerde tabellen.

DELTA - Delta-bestanden bevatten verwijzingen naar rijen in databestanden die zijn verwijderd.

ROOT - Rootbestanden bevatten systeemmetadata voor geheugengeoptimaliseerde en native gecompileerde objecten.

GROTE DATA - Grote databestanden bevatten waarden die zijn ingevoegd in kolommen (n)varchar(max) en varbinary(max), evenals de kolomsegmenten die deel uitmaken van kolomopslagindexen op geheugengeoptimaliseerde tabellen.
internal_storage_slot int De index van het bestand in de interne opslagarray. NULL voor ROOT of voor een toestand anders dan 1.
checkpoint_pair_file_id uniqueidentifier Overeenkomstig DATA- of DELTA-bestand. NULL voor ROOT.
file_size_in_bytes bigint Grootte van het bestand op de schijf.
file_size_used_in_bytes bigint Voor checkpoint-bestandsparen die nog worden ingevuld, wordt deze kolom bijgewerkt na het volgende checkpoint.
logical_row_count bigint Voor Data is het aantal ingevoegde rijen het aantal ingevoegde rijen.

Voor Delta wordt het aantal rijen verwijderd nadat ik rekening heb gehouden met de droptable.

Voor Root is NULL.
state smallint 0 - VOORAF GEMAAKT

1 - IN AANBOUW

2 - ACTIEF

3 - DOEL SAMENVOEGEN

8 - WACHTEN OP STAMAFKAPPING
staatsbeschrijving nvarchar(60) VOORAF GEMAAKT - Een aantal checkpointbestanden wordt vooraf toegewezen om wachttijden bij het toewijzen van nieuwe bestanden tijdens transacties te minimaliseren of te elimineren. Deze bestanden kunnen variëren in grootte en worden aangemaakt afhankelijk van de geraamde behoefte aan de werklast. Ze bevatten geen data. Dit is een opslagoverhead in databases met een MEMORY_OPTIMIZED_DATA bestandsgroep.

IN AANBOUW - Deze checkpointbestanden zijn in aanbouw, wat betekent dat ze worden ingevuld op basis van de logrecords die door de database zijn gegenereerd, en maken nog geen deel uit van een checkpoint.

ACTIEF - Deze bevatten de ingevoegde/verwijderde rijen van eerdere gesloten checkpoints. Ze bevatten de inhoud van de tabellen die in het geheugen worden gelezen voordat het actieve deel van het transactielogboek wordt toegepast bij de herstart van de database. We verwachten dat de grootte van deze checkpointbestanden ongeveer twee keer zo groot is als de in-memory grootte van geheugen-geoptimaliseerde tabellen, ervan uitgaande dat de merge-operatie gelijke tred houdt met de transactionele werklast.

MERGE TARGET - Het doel van merge operations - deze checkpointbestanden slaan de geconsolideerde datalijnen op uit de bronbestanden die door het mergebeleid zijn geïdentificeerd. Zodra de merge is geïnstalleerd, schakelt de MERGE TARGET over in de ACTIEVE toestand.

WACHTEN OP LOG-AFKORTING - Zodra de merge is geïnstalleerd en de MERGE TARGET CFP deel uitmaakt van een duurzame checkpoint, gaan de merge source checkpointbestanden over naar deze toestand. Bestanden in deze toestand zijn nodig voor de operationele correctheid van de database met geheugengeoptimaliseerde tabel. Bijvoorbeeld om te herstellen van een duurzaam checkpoint om terug in de tijd te gaan.
lower_bound_tsn bigint Ondergrens van de transactie in het bestand; NULL als de staat niet in (1, 3) zit.
upper_bound_tsn bigint Bovengrens van de transactie in het bestand; NULL als de staat niet in (1, 3) zit.
begin_checkpoint_id bigint ID van het begincontrolepunt.
end_checkpoint_id bigint ID van het eindcontrolepunt.
last_updated_checkpoint_id bigint ID van het laatste checkpoint dat dit bestand heeft bijgewerkt.
encryption_status smallint 0, 1, 2
encryption_status_desc nvarchar(60) 0 => ONVERSLEUTELD

1 => VERSLEUTELD MET SLEUTEL 1

2 => VERSLEUTELD MET SLEUTEL 2. Geldig alleen voor actieve bestanden.

SQL Server 2014 (12.x)

De volgende tabel beschrijft de kolommen voor sys.dm_db_xtp_checkpoint_files, voor SQL Server 2014 (12.x).

Kolomnaam Typologie Description
container_id int De ID van de container (weergegeven als een bestand met het type FILESTREAM in sys.database_files) waarvan het data- of deltabestand deel uitmaakt. Sluit zich aan bij file_id in sys.database_files (Transact-SQL).
container_guid uniqueidentifier De GUID van de container waarvan de data of delta-bestand deel uitmaakt.
checkpoint_file_id GUID ID van de data of delta-bestand.
relative_file_path nvarchar(256) Pad naar het data- of deltabestand, ten opzichte van de locatie van de container.
file_type tinyint 0 voor het databestand.

1 voor delta-bestand.

NULL als de toestandskolom op 7 is gezet.
bestandstypebeschrijving nvarchar(60) Het type bestand: DATA_FILE, DELTA_FILE, of NULL als de statuskolom op 7 staat.
internal_storage_slot int De index van het bestand in de interne opslagarray. NULL als de toestandskolom niet 2 of 3 is.
checkpoint_pair_file_id uniqueidentifier De bijbehorende data of deltabestand.
file_size_in_bytes bigint Grootte van het gebruikte bestand. NULL als de toestandskolom is ingesteld op 5, 6 of 7.
file_size_used_in_bytes bigint Gebruikte grootte van het gebruikte bestand. NULL als de toestandskolom is ingesteld op 5, 6 of 7.

Voor checkpoint-bestandsparen die nog worden ingevuld, wordt deze kolom bijgewerkt na het volgende checkpoint.
inserted_row_count bigint Aantal rijen in het databestand.
deleted_row_count bigint Aantal verwijderde rijen in het delta-bestand.
drop_table_deleted_row_count bigint Het aantal rijen in de databestanden dat wordt beïnvloed door een droptable. Van toepassing op databestanden wanneer de toestandskolom gelijk is aan 1.

Toont verwijderde rijtellingen uit verwijderde tabellen(en). De drop_table_deleted_row_count statistieken worden gecompileerd nadat de geheugen-garbage collection van de rijen uit de gedropte tabel is voltooid en een checkpoint is genomen. Als je SQL Server opnieuw opstart voordat de droptabellenstatistieken in deze kolom worden weergegeven, worden de statistieken bijgewerkt als onderdeel van het herstel. Het herstelproces laadt geen rijen van weggelaten tabellen. Statistieken voor afgedankte tabellen worden samengesteld tijdens de laadfase en in deze kolom gerapporteerd wanneer het herstel is voltooid.
state int 0 - VOORAF GEMAAKT

1 - IN AANBOUW

2 - ACTIEF

3 - DOEL SAMENVOEGEN

4 - SAMENGEVOEGDE BRON

5 - VEREIST VOOR BACK-UP/HA

6 - IN OVERGANG NAAR GRAFSTEEN

7 - GRAFSTEEN
staatsbeschrijving nvarchar(60) VOORGEMAAKTE - Een kleine set data- en delta-bestandsparen, ook wel checkpoint-bestandsparen (CFP's) genoemd, wordt vooraf toegewezen om wachttijden bij het toewijzen van nieuwe bestanden tijdens transacties te minimaliseren of te elimineren. Ze worden gemaakt met een databestandsgrootte van 128 MB en een delta-bestandsgrootte van 8 MB, maar bevatten geen data. Het aantal CFP's wordt berekend als het aantal logische processors of schedulers (één per core, geen maximum) met een minimum van 8. Dit is een vaste opslagoverhead in databases met geheugengeoptimaliseerde tabellen.

IN AANBOUW - Set van CFP's die nieuw ingevoegde en mogelijk verwijderde datarijen opslaan sinds het laatste checkpoint.

ACTIEF - Deze bevatten de ingevoegde en verwijderde rijen van eerdere gesloten checkpoints. Deze CFP's bevatten alle vereiste ingevoegde en verwijderde rijen die nodig zijn voordat het actieve deel van het transactielogboek wordt toegepast bij de herstart van de database. De grootte van deze CFP's zal ongeveer twee keer zo groot zijn als de in-memory grootte van geheugen-geoptimaliseerde tabellen, ervan uitgaande dat de merge-operatie actueel is met de transactionele werklast.

MERGE TARGET - De CFP slaat de geconsolideerde datarijen van de CFP(s) op die door het mergebeleid zijn geïdentificeerd. Zodra de merge is geïnstalleerd, schakelt de MERGE TARGET over in de ACTIEVE toestand.

MERGED SOURCE - Zodra de merge-operatie is geïnstalleerd, worden de source CFP's gemarkeerd als MERGED SOURCE. Let op: de samenvoegbeleidsevaluator kan meerdere samenvoegingen identificeren, maar een CFP kan slechts aan één samenvoegingsoperatie deelnemen.

VEREIST VOOR BACK-UP/HA - Zodra de merge is geïnstalleerd en de MERGE TARGET CFP deel uitmaakt van een duurzame checkpoint, gaan de merge source CFP's over naar deze toestand. CFP's in deze toestand zijn nodig voor de operationele correctheid van de database met geheugengeoptimaliseerde tabel. Bijvoorbeeld om te herstellen van een duurzaam checkpoint om terug in de tijd te gaan. Een CFP kan worden gemarkeerd voor garbage collection zodra het log-afkappunt buiten zijn transactiebereik gaat.

IN OVERGANG NAAR TOMBSTONE - Deze CFP's zijn niet nodig voor de In-Memory OLTP-engine en kunnen garbage collected worden gebruikt. Deze toestand geeft aan dat deze CFP's wachten op de achtergronddraad om ze over te zetten naar de volgende toestand, namelijk TOMBSTONE.

TOMBSTONE - Deze CFP's wachten om door de filestream garbage collector te worden verzameld. (sp_filestream_force_garbage_collection (Transact-SQL) )
lower_bound_tsn bigint De ondergrens van transacties in het bestand. NULL als de kolom toestand anders is dan 2, 3 of 4.
upper_bound_tsn bigint De bovengrens van transacties in het bestand. NULL als de kolom toestand anders is dan 2, 3 of 4.
last_backup_page_count int Logisch paginaaantal dat bij de laatste back-up wordt bepaald. Van toepassing wanneer de toestandskolom is ingesteld op 2, 3, 4 of 5. NULL als het aantal pagina's niet bekend is.
delta_watermark_tsn int De transactie van het laatste checkpoint dat naar dit deltabestand schreef. Dit is het watermerk voor het delta-bestand.
last_checkpoint_recovery_lsn nvarchar(23) Herstellog-sequentienummer van het laatste checkpoint dat het bestand nog nodig heeft.
tombstone_operation_lsn nvarchar(23) Het bestand wordt verwijderd zodra de tombstone_operation_lsn achterblijft bij het logafkapings-log-sequentienummer.
logical_deletion_log_block_id bigint Gilt alleen voor staat 5.

Permissions

Vereist VIEW DATABASE STATE machtiging voor de database.

Machtigingen voor SQL Server 2022 en hoger

Hiervoor is de machtiging VIEW DATABASE PERFORMANCE STATE vereist voor de database.

Gebruiksvoorbeelden

Je kunt het totale geheugen dat door In-Memory OLTP wordt gebruikt als volgt schatten:

-- total storage used by In-Memory OLTP  
SELECT SUM (file_size_in_bytes)/(1024*1024) as file_size_in_MB  
FROM sys.dm_db_xtp_checkpoint_files;

Om een uitsplitsing van opslaggebruik per toestand en bestandstype te zien, voer de volgende query uit:

SELECT state_desc  
 , file_type_desc  
 , COUNT(*) AS [count]  
 , SUM(file_size_in_bytes) / 1024 / 1024 AS [on-disk size MB]   
FROM sys.dm_db_xtp_checkpoint_files  
GROUP BY state, state_desc, file_type, file_type_desc  
ORDER BY state, file_type;