記憶體中的 OLTP 記憶體回收

如果某個不再使用的交易刪除資料列,則該資料列視為過時。 過時的資料列適合進行記憶體回收。 以下是In-Memory OLTP 中的垃圾收集特性:

  • 非鎖定。 記憶體回收會隨著時間散發,藉此將對工作負載的影響降到最低。

  • 合作式。 使用者交易會參與記憶體回收與主要記憶體回收執行緒。

  • 高效率。 使用者交易針對所使用之存取路徑 (索引) 中的過時資料列,會取消其連結。 這會減少最後移除資料列時所需進行的工作。

  • 主動回應。 記憶體不足的壓力會導致記憶體回收變得積極。

  • 可擴充。 認可後,使用者交易會執行一部分的記憶體回收工作。 交易活動越多,就有越多交易取消過時資料列的連結。

記憶體回收是由主要記憶體回收執行緒所控制。 主要記憶體回收執行緒會每分鐘執行一次,或在認可的交易數目超出內部臨界值時執行。 記憶體回收行程的工作是:

使用者交易在認可之後,會識別與其執行所在之排程器相關聯的所有佇列項目,然後釋出記憶體。 如果排程器上的記憶體回收佇列是空的,則它會搜尋目前 NUMA 節點中所有非空白的佇列。 如果發現交易活動較少且有記憶體不足的壓力,則主要記憶體回收執行緒可從任何佇列進行資料列的記憶體回收。 例如,如果刪除大量資料列之後沒有交易活動,而且沒有記憶體不足的壓力,則在交易活動繼續或發生記憶體不足的壓力之前,將不會對已刪除的資料列進行記憶體回收。

另請參閱

為記憶體內部 OLTP 管理記憶體