鎖分類:
從對數(shù)據(jù)操作的粒度分 :
表鎖:操作時,會鎖定整個表。行鎖:操作時,會鎖定當(dāng)前操作行。
從對數(shù)據(jù)操作的類型分:
讀鎖(共享鎖):針對同一份數(shù)據(jù),多個讀操作可以同時進(jìn)行而不會互相影響。寫鎖(排它鎖):當(dāng)前操作沒有完成之前,它會阻斷其他客戶端的
行表鎖特點:
myisam 表鎖:
如何加表鎖
myisam 在執(zhí)行查詢語句(select)前,會自動給涉及的所有表加讀鎖,在執(zhí)行更新操作(update、delete、
insert 等)前,會自動給涉及的表加寫鎖,這個過程并不需要用戶干預(yù),因此,用戶一般不需要直接用 lock
table 命令給 myisam 表顯式加鎖。
簡而言之,就是讀鎖會阻塞寫,但是不會阻塞讀。而寫鎖,則既會阻塞讀,又會阻塞寫。
此外,myisam 的讀寫鎖調(diào)度是寫優(yōu)先,這也是myisam不適合做寫為主的表的存儲引擎的原因。因為寫鎖后,其
他線程不能做任何操作,大量的更新會使查詢很難得到鎖,從而造成永遠(yuǎn)阻塞。
innodb 行鎖
行鎖介紹
行鎖特點 :偏向innodb 存儲引擎,開銷大,加鎖慢;會出現(xiàn)死鎖;鎖定粒度最小,發(fā)生鎖沖突的概率最低,并發(fā)度
也最高。
innodb 與 myisam 的最大不同有三點:一是支持事務(wù);二是 采用了行級鎖;支持外鍵。
事務(wù):
事務(wù)是由一組sql語句組成的邏輯處理單元。
事務(wù)的四大特性(acid):
到此這篇關(guān)于mysql中鎖的相關(guān)問題的文章就介紹到這了,更多相關(guān)mysql鎖問題內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:https://blog.csdn.net/weixin_43572928/article/details/122132181