1. 程式人生 > 其它 >MySQL MyISAM 讀鎖寫鎖限制

MySQL MyISAM 讀鎖寫鎖限制

技術標籤:Mysqlmysql資料庫mysql優化

文章目錄


MyISAM 自動加鎖機制

在執行查詢語句(SELECT)前,會自動給涉及的所有表加讀鎖,在執行增刪改操作前,會自動給涉及的表加寫鎖。

二、MySql 的表級鎖的兩種模式

1.表共享讀鎖(Table Read Lock)

當前session其他 session
讀鎖表
寫鎖表×阻塞更新
讀未鎖表×
寫未鎖表×

2.表獨佔寫鎖(Table Write Lock)

當前session其他 session
讀鎖表阻塞查詢
寫鎖表阻塞更新
讀未鎖表×
寫未鎖表×

注意

1.有時效寫鎖測試沒有效果是因為 mysql 存在查詢快取。
2.當手動連續執行兩次鎖表操作時,最後執行的語句生效。
	例如:
		LOCK TABLE test01 READ;
		LOCK TABLE test02 READ;
		(test02 表生效)

總結

  1. 對 MyISAM 儲存引擎表的讀操作(加讀鎖),不會阻塞其他程序對同一表的讀請求,但會阻塞同一表的寫請求,只有當讀鎖釋放後,才會執行其他進行的寫操作。
  2. 對 MyISAM 儲存引擎表的寫操作(加寫表),會阻塞其他程序對同一表的讀和寫作操,只有當鞋標釋放後,才會執行其他程序的讀寫操作
  3. 簡單來說:讀鎖會阻塞寫,而寫鎖會阻塞讀寫