---
title: "sys.dm_db_xtp_checkpoint_stats (Transact-SQL) | Microsoft Docs"
ms.custom: ""
ms.date: "03/20/2017"
ms.prod: sql
ms.prod_service: "database-engine, sql-database"
ms.reviewer: ""
ms.technology: in-memory-oltp
ms.topic: "language-reference"
f1_keywords:
- "dm_db_xtp_checkpoint_stats"
- "dm_db_xtp_checkpoint_stats_TSQL"
- "sys.dm_db_xtp_checkpoint_stats"
- "sys.dm_db_xtp_checkpoint_stats_TSQL"
dev_langs:
- "TSQL"
helpviewer_keywords:
- "sys.dm_db_xtp_checkpoint_stats dynamic management view"
ms.assetid: 8d0b18ca-db4d-4376-9905-3e4457727c46
author: stevestein
ms.author: sstein
manager: craigg
monikerRange: "=azure-sqldw-latest||>=sql-server-2016||=sqlallproducts-allversions||>=sql-server-linux-2017||=azuresqldb-mi-current"
---
# sys.dm_db_xtp_checkpoint_stats (Transact-SQL)
[!INCLUDE[tsql-appliesto-ss2014-asdb-xxxx-xxx-md](../../includes/tsql-appliesto-ss2014-asdb-xxxx-xxx-md.md)]
Returns statistics about the In-Memory OLTP checkpoint operations in the current database. If the database has no In-Memory OLTP objects, returns an empty result set.
For more information, see [In-Memory OLTP (In-Memory Optimization)](../../relational-databases/in-memory-oltp/in-memory-oltp-in-memory-optimization.md).
```
SELECT * FROM db.sys.dm_db_xtp_checkpoint_stats;
```
**[!INCLUDE[ssSQL14](../../includes/sssql14-md.md)] is substantially different from more recent versions and is discussed lower in the topic at [SQL Server 2014](#bkmk_2014).**
## [!INCLUDE[ssSQL15](../../includes/sssql15-md.md)] and later
The following table describes the columns in `sys.dm_db_xtp_checkpoint_stats`, beginning with **[!INCLUDE[ssSQL15](../../includes/sssql15-md.md)]**.
|Column name|Type|Description|
|-----------------|----------|-----------------|
|last_lsn_processed|**bigint**|Last LSN seen by the controller.|
|end_of_log_lsn|**numeric(38)**|The LSN of the end of log.|
|bytes_to_end_of_log|**bigint**|Log bytes unprocessed by the controller, corresponding to the bytes between `last_lsn_processed` and `end_of_log_lsn`.|
|log_consumption_rate|**bigint**|Rate of transaction log consumption by the controller (in KB/sec).|
|active_scan_time_in_ms|**bigint**|Time spent by the controller in actively scanning the transaction log.|
|total_wait_time_in_ms|**bigint**|Cumulative wait time for the controller while not scanning the log.|
|waits_for_io|**bigint**|Number of waits for log IO incurred by the controller thread.|
|io_wait_time_in_ms|**bigint**|Cumulative time spent waiting on log IO by the controller thread.|
|waits_for_new_log_count|**bigint**|Number of waits incurred by the controller thread for a new log to be generated.|
|new_log_wait_time_in_ms|**bigint**|Cumulative time spent waiting on a new log by the controller thread.|
|idle_attempts_count|**bigint**|Number of times the controller transitioned to an idle state.|
|tx_segments_dispatched|**bigint**|Number of segments seen by the controller and dispatched to the serializers. Segment is a contiguous portion of log that forms a unit of serialization. It is currently sized to 1MB, but can change in future.|
|segment_bytes_dispatched|**bigint**|Total byte count of bytes dispatched by the controller to serializers, since the database restart.|
|bytes_serialized|**bigint**|Total count of bytes serialized since database restart.|
|serializer_user_time_in_ms|**bigint**|Time spent by serializers in user mode.|
|serializer_kernel_time_in_ms|**bigint**|Time spent by serializers in kernel mode.|
|xtp_log_bytes_consumed|**bigint**|Total count of log bytes consumed since the database restart.|
|checkpoints_closed|**bigint**|Count of checkpoints closed since the database restart.|
|last_closed_checkpoint_ts|**bigint**|Timestamp of the last closed checkpoint.|
|hardened_recovery_lsn|**numeric(38)**|Recovery will start from this LSN.|
|hardened_root_file_guid|**uniqueidentifier**|GUID of the root file that hardened as a result of the last completed checkpoint.|
|hardened_root_file_watermark|**bigint**|**Internal Only**. How far it is valid to read the root file up to (this is an internally relevant type only – called BSN).|
|hardened_truncation_lsn|**numeric(38)**|LSN of the truncation point.|
|log_bytes_since_last_close|**bigint**|Bytes from last close to the current end of log.|
|time_since_last_close_in_ms|**bigint**|Time since last close of the checkpoint.|
|current_checkpoint_id|**bigint**|Currently new segments are being assigned to this checkpoint. The checkpoint system is a pipeline. The current checkpoint is the one which segments from the log are being assigned to. Once it’s reached a limit, the checkpoint is released by the controller and a new one created as current.|
|current_checkpoint_segment_count|**bigint**|Count of segments in the current checkpoint.|
|recovery_lsn_candidate|**bigint**|**Internally Only**. Candidate to be picked as recoverylsn when current_checkpoint_id closes.|
|outstanding_checkpoint_count|**bigint**|Number of checkpoints in the pipeline waiting to be closed.|
|closing_checkpoint_id|**bigint**|ID of the closing checkpoint.
Serializers are working in parallel, so once they’re finished then the checkpoint is a candidate to be closed by close thread. But the close thread can only close one at a time and it must be in order, so the closing checkpoint is the one that the close thread is working on.|
|recovery_checkpoint_id|**bigint**|ID of the checkpoint to be used in recovery.|
|recovery_checkpoint_ts|**bigint**|Time stamp of recovery checkpoint.|
|bootstrap_recovery_lsn|**numeric(38)**|Recovery LSN for the bootstrap.|
|bootstrap_root_file_guid|**uniqueidentifier**|GUID of the root file for the bootstrap.|
|internal_error_code|**bigint**|Error seen by any of the controller, serializer, close, and merge threads.|
|bytes_of_large_data_serialized|**bigint**|The amount of data that was serialized. |
## [!INCLUDE[ssSQL14](../../includes/sssql14-md.md)]
The following table describes the columns in `sys.dm_db_xtp_checkpoint_stats`, for **[!INCLUDE[ssSQL14](../../includes/sssql14-md.md)]**.
|Column name|Type|Description|
|-----------------|----------|-----------------|
|log_to_process_in_bytes|**bigint**|The number of log bytes between the thread's current log sequence number (LSN) and the end-of-log.|
|total_log_blocks_processed|**bigint**|Total number of log blocks processed since server startup.|
|total_log_records_processed|**bigint**|Total number of log records processed since server startup.|
|xtp_log_records_processed|**bigint**|Total number of In-Memory OLTP log records processed since server startup.|
|total_wait_time_in_ms|**bigint**|Cumulative wait time in ms.|
|waits_for_io|**bigint**|Number of waits for log IO.|
|io_wait_time_in_ms|**bigint**|Cumulative time spent waiting on log IO.|
|waits_for_new_log|**bigint**|Number of waits for new log to be generated.|
|new_log_wait_time_in_ms|**bigint**|Cumulative time spend waiting on new log.|
|log_generated_since_last_checkpoint_in_bytes|**bigint**|Amount of log generated since the last In-Memory OLTP checkpoint.|
|ms_since_last_checkpoint|**bigint**|Amount of time in milliseconds since the last In-Memory OLTP checkpoint.|
|checkpoint_lsn|**numeric (38)**|The recovery log sequence number (LSN) associated with the last completed In-Memory OLTP checkpoint.|
|current_lsn|**numeric (38)**|The LSN of the log record that is currently processing.|
|end_of_log_lsn|**numeric (38)**|The LSN of the end of the log.|
|task_address|**varbinary(8)**|The address of the SOS_Task. Join to sys.dm_os_tasks to find additional information.|
## Permissions
Requires `VIEW DATABASE STATE` permission on the server.
## See Also
[Memory-Optimized Table Dynamic Management Views (Transact-SQL)](../../relational-databases/system-dynamic-management-views/memory-optimized-table-dynamic-management-views-transact-sql.md)