Mysql 鎖粒度

表鎖:

 

表鎖是mysql 中最幾本的鎖策略,並且是開銷最小的策略:它會鎖定整張表。

 

一個用戶在對表進行鎖操作(增,刪,改)前,首先要獲得寫鎖,這會阻塞其他用戶對該表的所有讀寫操作。隻有沒有寫鎖時,其他用戶才能獲得讀鎖,讀鎖之間是不相互阻塞的。

 

在特定的場景中,表鎖也可能有良好的性能。例如:READ  LOCAL 表鎖支持某些類型的並發寫操作。另外,寫鎖也比讀鎖有更高的優先級,因此,一個寫鎖的請求,可能會被插入到讀鎖隊列的前面(寫鎖能插入到鎖隊列的前面,反之,讀鎖不能插入到寫鎖的前面);

 

盡管存儲引擎可以管理自己的鎖,Mysql本身還是會使用各種有效的鎖來實現不同的目的。例如:伺服器會為諸如 ALTER TABLE 之類的語句使用表鎖,而忽略存儲引擎的鎖機制。

 

行級鎖:

 

行級鎖可以最大程度的支持並發處理(同時也帶來最大鎖開銷)。眾所周知,在InnoDB 和XtraDB 以及其他一些存儲引擎中實現瞭行級鎖。行級鎖隻在存儲引擎層實現,而Mysql伺服器層沒有實現。

You May Also Like