sys.dm_db_xtp_gc_cycle_stats (Transact-SQL)
輸出已刪除一個或多個資料列之已認可交易的目前狀態。 閒置的記憶體回收執行緒會每分鐘喚醒一次,或是在認可的 DML 交易數目超出內部臨界值時喚醒 (從上一次記憶體回收週期之後算起)。 在記憶體回收週期中,它會將已經認可的交易移到與層代有關的一個或多個佇列中。 已經產生過時版本的交易會在 16 個層代中分組在 16 筆交易的單位中,如下所示:
層代 0:這會儲存比最舊的作用中交易更早認可的所有交易。 這些交易產生的資料列版本可立即供記憶體回收之用。
層代 1-14:儲存時間戳記大於最舊的作用中交易的交易。 資料列版本無法進行記憶體回收。 每個層代最多可以保存 16 筆交易。 這些層代中一共可以有 224 (14 * 16) 筆交易存在。
層代 15:時間戳記大於最舊的作用中交易的剩餘交易會前往層代 15。 類似於層代 0,層代 15 中沒有交易數的限制。
當面臨記憶體不足的壓力時,記憶體回收執行緒會積極地更新最舊的作用中交易提示,這樣會強制記憶體回收。
如需詳細資訊,請參閱<In-Memory OLTP (記憶體中最佳化)>。
適用於:SQL Server (SQL Server 2014 至目前版本)。 |
資料行名稱 |
類型 |
描述 |
---|---|---|
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 |
每一層代 (Generation) 的交易數目。 |
權限
需要伺服器的 VIEW DATABASE 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