MySQL中鎖的相關問題

鎖分類:

從對數據操作的粒度分 :

表鎖:操作時,會鎖定整個表。行鎖:操作時,會鎖定當前操作行。

從對數據操作的類型分:

讀鎖(共享鎖):針對同一份數據,多個讀操作可以同時進行而不會互相影響。寫鎖(排它鎖):當前操作沒有完成之前,它會阻斷其他客戶端的

在這裡插入圖片描述


行表鎖特點:

在這裡插入圖片描述


MyISAM 表鎖:

如何加表鎖
MyISAM 在執行查詢語句(SELECT)前,會自動給涉及的所有表加讀鎖,在執行更新操作(UPDATE、DELETE、
INSERT 等)前,會自動給涉及的表加寫鎖,這個過程並不需要用戶幹預,因此,用戶一般不需要直接用 LOCK
TABLE 命令給 MyISAM 表顯式加鎖。

在這裡插入圖片描述

簡而言之,就是讀鎖會阻塞寫,但是不會阻塞讀。而寫鎖,則既會阻塞讀,又會阻塞寫。

此外,MyISAM 的讀寫鎖調度是寫優先,這也是MyISAM不適合做寫為主的表的存儲引擎的原因。因為寫鎖後,其
他線程不能做任何操作,大量的更新會使查詢很難得到鎖,從而造成永遠阻塞。


InnoDB 行鎖

行鎖介紹
行鎖特點 :偏向InnoDB 存儲引擎,開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖沖突的概率最低,並發度
也最高。
InnoDB 與 MyISAM 的最大不同有三點:一是支持事務;二是 采用瞭行級鎖;支持外鍵。

事務:
事務是由一組SQL語句組成的邏輯處理單元。

事務的四大特性(ACID):

在這裡插入圖片描述
在這裡插入圖片描述

在這裡插入圖片描述

到此這篇關於MySQL中鎖的相關問題的文章就介紹到這瞭,更多相關MySQL鎖問題內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: