MySQL中的共享鎖和排他鎖及加鎖方式
MySQL 中的鎖可以從多個維度進(jìn)行分類,其中從模式上可以分為共享鎖(Shared Lock,S Lock)和 排他鎖(Exclusive Lock,X Lock)。
共享鎖(Shared Lock,S Lock)
共享鎖,也被稱為讀鎖(Read Lock),共享鎖保證了數(shù)據(jù)的共享讀特性。
- 允許多個事務(wù)同時對同一數(shù)據(jù)資源進(jìn)行讀取操作,即多個事務(wù)可以同時持有相同的共享鎖,并發(fā)讀取數(shù)據(jù)
- 阻塞排他鎖,即如果一個事務(wù)已經(jīng)持有了共享鎖,其他事務(wù)如果要獲取排他鎖,則需要等待共享鎖釋放。其實就是不允許任何事務(wù)對數(shù)據(jù)進(jìn)行修改(因為修改數(shù)據(jù)要先加排它鎖)
共享鎖的加鎖方式
SELECT ... LOCK IN SHARE MODE SELECT ... FOR SHARE(MySQL 8.0 及以上版本)
排他鎖(Exclusive Lock,X Lock)
- 只能有一個事務(wù)持有排他鎖,其他事務(wù)無法獲取同樣的記錄上的排他鎖。即只允許一個事務(wù)修改或刪除某一行數(shù)據(jù)
- 阻塞排他鎖和共享鎖,即如果一個事務(wù)已經(jīng)持有了排他鎖,其他事務(wù)無法獲取共享鎖或排他鎖,其實就是不允許其他事務(wù)對該行數(shù)據(jù)進(jìn)行加鎖讀取或修改(注意只是不能加共享鎖或排他鎖讀取,但正常查詢是快照讀,這是可以的)
排它鎖的加鎖方式
SELECT ... FOR UPDATE UPDATE語句 DELETE 語句
到此這篇關(guān)于MySQL中的共享鎖和排他鎖的文章就介紹到這了,更多相關(guān)mysql共享鎖和排他鎖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL數(shù)據(jù)時區(qū)問題以及datetime和timestamp類型存儲的差異
這篇文章主要介紹了MySQL數(shù)據(jù)時區(qū)問題以及datetime和timestamp類型存儲的差異,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11
MySQL數(shù)據(jù)庫遠(yuǎn)程訪問權(quán)限如何打開(兩種方法)
本文通過兩種方法給大家介紹MySQL數(shù)據(jù)庫遠(yuǎn)程訪問權(quán)限的打開方法,非常不錯,實用性非常高,感興趣的朋友一起看看吧2016-05-05
MySQL中Binlog的完整格式解析(ROW 模式,默認(rèn))
本文介紹了MySQL 5.7中ROW格式的binlog的特性、解析方法和實戰(zhàn)案例,包括MySQL 5.7的binlog核心特性、ROW格式binlog結(jié)構(gòu)、解析命令、常見問題及解決方法等內(nèi)容,需要的朋友可以參考下2026-03-03
mysql-8.0.15-winx64 使用zip包進(jìn)行安裝及服務(wù)啟動后立即關(guān)閉問題
這篇文章主要介紹了mysql 使用zip包進(jìn)行安裝以及服務(wù)啟動后立即關(guān)閉問題 ,本實例使用的mysql版本為mysql-8.0.15-winx64,需要的朋友可以參考下2019-05-05

