MySQL MyISAM引擎的讀鎖與寫鎖

tian_ya_jian_ke發表於2020-12-02

MyISAM引擎表鎖(偏讀取)

加讀鎖

獲得read鎖定

LOCK TABLE tb_item_01 READ;

測試當前session是否可以查詢該表記錄,經測試ok。

測試當前session是否可以更新或插入該表記錄

測試當前session是否可以查詢其他表

測試其他session是否可以查詢該表記錄,經測試ok。

測試其他session是否可以更新或插入該表記錄,經測試阻塞,直到釋放讀鎖。

UNLOCK TABLES;#解鎖

測試其他session是否可以查詢或更新其他表記錄,經測試ok。

MyISAM引擎加寫鎖

獲得wirte鎖定

LOCK TABLE tb_item_01 WRITE;

當前session對當前表的查詢、更新、插入,都ok。

當前session對其他表的查詢、更新、插入

其他session對當前表的查詢阻塞,需要等待鎖被釋放。

 

總結:對MyISAM表的讀操作(加讀鎖),不會阻塞其他程式對同一表的讀請求,但會阻塞對同一表的寫請求。只有當讀鎖釋放後,才會執行其他程式的寫操作。

對MyISAM表的寫操作(加寫鎖),會阻塞其他程式對同一表的讀和寫請求。只有當讀鎖釋放後,才會執行其他程式的讀寫操作。

相關文章