sys.dm_db_xtp_gc_cycle_stats (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體
輸出已刪除一或多個數據列之已認可交易的目前狀態。 閑置垃圾收集線程會每分鐘喚醒一次,或當認可的 DML 交易數目超過自上次垃圾收集周期之後的內部閾值時。 在垃圾收集週期中,認可的交易會移至與世代相關聯的一或多個佇列。 產生過時版本的交易會以 16 個世代的 16 筆交易單位分組,如下所示:
層代 0:這會儲存早於最舊使用中交易的所有交易。 這些交易所產生的數據列版本會立即可供垃圾收集使用。
世代 1-14:儲存時間戳大於最舊使用中交易的交易。 無法垃圾收集數據列版本。 每一代最多可以保存 16 筆交易。 這些世代共有 224 個 (14 * 16) 筆交易。
第 15 代:時間戳大於最舊使用中交易的剩餘交易會移至層代 15。 與 generation-0 類似,層代 15 的交易數目沒有限制。
當有記憶體壓力時,垃圾收集線程會積極更新最舊的使用中交易提示,這會強制垃圾收集。
如需詳細資訊,請參閱 In-Memory OLTP (記憶體中最佳化)。
資料行名稱 | 類型 | 描述 |
---|---|---|
cycle_id |
bigint | 垃圾收集週期的唯一標識碼。 |
ticks_at_cycle_start |
bigint | 週期啟動時刻度。 |
ticks_at_cycle_end |
bigint | 循環結束時刻度。 |
base_generation |
bigint | 資料庫中目前的基底產生值。 這代表用來識別垃圾收集交易的最舊使用中交易的時間戳。 最舊的使用中交易標識碼會以16的增量更新。 例如,如果您有交易標識碼為 124、125、126 ...139,值為124。 當您新增另一個交易時,例如 140,此值為 140。 |
xacts_copied_to_local |
bigint | 從交易管線複製到資料庫的產生數位中的交易數目。 |
xacts_in_gen_0 - xacts_in_gen_15 |
bigint | 每一代的交易數目。 |
權限
需要資料庫的 VIEW DATABASE STATE 許可權。
SQL Server 2022 和更新版本的權限
需要資料庫上的 VIEW DATABASE PERFORMANCE STATE 權限。
使用案例
以下是包含數據行子集的範例輸出,其中顯示 27 代:
cycle_id ticks_at_cycle_start ticks_at_cycle_end base_generation xacts_in_gen_0 xacts_in_gen_1
1 123160509 123160509 1 0 0
2 123176822 123176822 1 0 1
3 123236826 123236826 1 0 1
4 123296829 123296829 1 0 1
5 123356832 123356941 129 0 0
6 123357473 123357473 129 0 0
7 123417486 123417486 129 0 0
8 123477489 123477489 129 0 0
9 123537492 123537492 129 0 0
10 123597500 123597500 129 0 0
11 123657504 123657504 129 0 0
12 123717507 123717507 129 0 0
13 123777510 123777510 129 0 0
14 123837513 123837513 129 0 0
15 123897516 123897516 129 0 0
16 123957516 123957516 129 0 0
17 124017516 124017516 129 0 0
18 124077517 124077517 129 0 0
19 124137517 124137517 129 0 0
20 124197518 124197518 129 0 0
21 124257518 124257518 129 0 0
22 124317523 124317523 129 0 0
23 124377526 124377526 129 0 0
24 124437529 124437529 129 0 0
25 124497533 124497533 129 0 0
26 124557536 124557536 129 0 0
27 124617539 124617539 129 0 0