1. 程式人生 > >鎖&lock與latch

鎖&lock與latch

使用 inno 其它 nod gin for 觀察 臨界資源 inf

鎖是數據庫系統區別於文件系統的一個關鍵特性。鎖機制用於管理對共享資源的並發訪問。Innodb不僅僅使用行鎖,也會在數據庫內部其它地方使用鎖,從而允許對多種不同資源提供並發訪問。如:操作緩沖池中的LRU列表、刪除、添加、移動LRU列表中的元素,為了保證一致性,必須有鎖的介入。數據庫系統使用鎖是為了支持對共享資源進行並發訪問提供數據的完整性和一致性。

(1)latch一般稱為閂鎖(輕量級的鎖),因為要求鎖定的時間必須非常短。若持續的時間長,則應用的性能會非常差。在Innodb存儲引擎中,latch又可以分為mutex(互斥量)和rwlock(讀寫鎖)。其目的是用來保證並發線程操作臨界資源的正確性,並且通常沒有死鎖檢測的機制。

(2)lock的對像是事務,用來鎖定的是數據庫中的對像,如:表、頁、行。並且一般lock的對像僅在commit或rollback後進行釋放(不同事務隔離級別釋放的時間可能不同)。此外,lock,正如在大多數數據庫中一樣,是有死鎖機制的。

技術分享圖片

對於InnoDB存儲引擎中的latch,可以通過show engine innodb mutex來進行查看。 相對來說,lock信息就直觀很多。可以通過show engine innodb status及iformation_schema架構下的表innodb_trx、innodb_lock、innodb_lock_waits來觀察鎖的信息。

鎖&lock與latch