InnoDB
使用「內容感知交易排程」(Contention-Aware Transaction Scheduling,CATS) 演算法,以優先處理正在等待鎖定的交易。當多個交易正在等待同一物件上的鎖定時,CATS 演算法會判斷哪個交易先收到鎖定。
CATS 演算法會根據交易封鎖的交易數量,為等待中的交易指派排程權重,藉此優先處理等待中的交易。例如,如果有兩個交易正在等待同一個物件上的鎖定,則封鎖最多交易的交易會被指派較大的排程權重。如果權重相同,則會優先處理等待時間最長的交易。
您可以查詢資訊綱要 INNODB_TRX
表格中的 TRX_SCHEDULE_WEIGHT
資料行,檢視交易排程權重。權重僅針對等待中的交易計算。等待中的交易是指 TRX_STATE
資料行回報為 LOCK WAIT
交易執行狀態的交易。沒有等待鎖定的交易會回報 NULL TRX_SCHEDULE_WEIGHT
值。
提供 INNODB_METRICS
計數器,以監控程式碼層級的交易排程事件。如需使用 INNODB_METRICS
計數器的相關資訊,請參閱章節 17.15.6,「InnoDB INFORMATION_SCHEMA 指標表格」。
lock_rec_release_attempts
嘗試釋放記錄鎖定的次數。單次嘗試可能會導致釋放零個或多個記錄鎖定,因為單一結構中可能會有零個或多個記錄鎖定。
lock_rec_grant_attempts
嘗試授與記錄鎖定的次數。單次嘗試可能會導致授與零個或多個記錄鎖定。
lock_schedule_refreshes
分析等待圖以更新已排程交易權重的次數。