MySQL中鎖的相關問題
鎖分類:
從對數據操作的粒度分 :
表鎖:操作時,會鎖定整個表。行鎖:操作時,會鎖定當前操作行。
從對數據操作的類型分:
讀鎖(共享鎖):針對同一份數據,多個讀操作可以同時進行而不會互相影響。寫鎖(排它鎖):當前操作沒有完成之前,它會阻斷其他客戶端的
行表鎖特點:
MyISAM 表鎖:
如何加表鎖
MyISAM 在執行查詢語句(SELECT)前,會自動給涉及的所有表加讀鎖,在執行更新操作(UPDATE、DELETE、
INSERT 等)前,會自動給涉及的表加寫鎖,這個過程並不需要用戶幹預,因此,用戶一般不需要直接用 LOCK
TABLE 命令給 MyISAM 表顯式加鎖。
簡而言之,就是讀鎖會阻塞寫,但是不會阻塞讀。而寫鎖,則既會阻塞讀,又會阻塞寫。
此外,MyISAM 的讀寫鎖調度是寫優先,這也是MyISAM不適合做寫為主的表的存儲引擎的原因。因為寫鎖後,其
他線程不能做任何操作,大量的更新會使查詢很難得到鎖,從而造成永遠阻塞。
InnoDB 行鎖
行鎖介紹
行鎖特點 :偏向InnoDB 存儲引擎,開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖沖突的概率最低,並發度
也最高。
InnoDB 與 MyISAM 的最大不同有三點:一是支持事務;二是 采用瞭行級鎖;支持外鍵。
事務:
事務是由一組SQL語句組成的邏輯處理單元。
事務的四大特性(ACID):
到此這篇關於MySQL中鎖的相關問題的文章就介紹到這瞭,更多相關MySQL鎖問題內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 深入理解mysql各種鎖
- mysql查詢優化之100萬條數據的一張表優化方案
- 詳解MySQL中事務隔離級別的實現原理
- Java面試題沖刺第十二天–數據庫(2)
- 詳解MySQL數據庫千萬級數據查詢和存儲