MySQL內部實現讀鎖和寫鎖的具體鎖定型別介紹

chenfeng發表於2018-07-23

對於MySQL資料庫讀鎖和寫鎖的加鎖方式,透過使用LOCK TABLE和UNLOCK TABLE來實現對錶的加鎖和解鎖。

具體鎖定型別如下:

READ     普通讀鎖定

WRITE    普通寫鎖定

UNLOCK   釋放鎖定請求的互動用鎖型別

IGNORE    當發生鎖請求的時候內部互動使用,在鎖定結構和佇列中並不會有任何資訊儲存

READ WITH SHARED_LOCKS      在InnoDB中使用,語法為:select  .... lock in share mode;

READ_HIGH_PRIORITY    高優先順序讀鎖定

WRITE_LOW_PRIORITY    低優先順序寫鎖定,透過設定LOW_PRIORITY_UPDATE=1而產生

READ_NO_INSERT      不允許Concurrent Insert的鎖定

WRITE_ALLOW_WRITE    這個型別實際上就是由儲存引擎自行處理鎖定的時候,MySQL允許其他的執行緒再獲取讀或寫鎖定,即使有資源衝突,儲存引擎自行處理

WRITE_ALLOW_READ     這種鎖定發生在對錶DDL操作時,MySQL可以允許其他執行緒獲取讀鎖定,因為MySQL是透過重建整張表然後再RENAME的方式實現該功能,因此這個過程表依然可以提供讀服務

WRITE_CONCURRENT_INSERT   正在執行Concurrent Insert時使用的鎖定方式,該鎖定進行時除了READ_NO_INSERT之外的其他任何讀鎖定請求都不會被阻塞

WRITE_DELAYED      在使用INSERT DELEAYED時發生的鎖定型別

WRITE_ONLY       當在操作過程中某個鎖定異常中斷之後系統內部需要進行CLOSE TABLE的操作,在這個過程中出現的鎖定型別就是WRITE_ONLY 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2158325/,如需轉載,請註明出處,否則將追究法律責任。

相關文章