mysql學習-7.獨占鎖和共享鎖

1.獨占鎖(防止臟寫)

獨占鎖叫做寫鎖

并發(fā)事務修改一行數(shù)據(jù)時,會先判斷這行數(shù)據(jù)是否有被加鎖.

如果未加鎖就會添加一個獨占鎖,包含了自己的trx_id和狀態(tài)和這行數(shù)據(jù)關聯(lián)起來

第二事務過來的時候判斷到有鎖了,那么他也加一個獨占鎖在后面排隊只是狀態(tài)是待執(zhí)行的狀態(tài)

第一個事務執(zhí)行完了之后就會檢查這行數(shù)據(jù)是否有其他的鎖.他會修改一個鎖的狀態(tài)讓他進入執(zhí)行狀態(tài)

2.共享鎖

共享鎖叫做讀鎖

去讀取加了獨占鎖的值的時候,會自動執(zhí)行mvcc的規(guī)則去undo中讀他的快照版本

共享鎖是查詢的時候可以添加的鎖,但共享鎖和獨占鎖是互斥的.

加了獨占鎖的行是加不了共享鎖的,但另一個查詢的事務是可以加共享鎖的

所以有以下規(guī)律

鎖類型 ???? 獨占鎖 ???? 共享鎖

獨占鎖? ? ? ? 互斥 ???????? 互斥

共享鎖????????互斥? ? ? ? ? 不互斥

3.sql上加鎖的使用方式

共享鎖:在查詢語句后面加上lock in share mode

獨占鎖:for update

4.表級的意向鎖

表級獨占意向鎖 LOCK TABLES xxx WRITE

表級共享意向鎖 LOCK TABLES xxx READ

表級的意向鎖意義不大,可以不用考慮

鎖類型 ???? 獨占鎖 ???? 意向獨占鎖 ???? 共享鎖 ???? 意向共享鎖

獨占鎖 ???? 互斥 ???????? 互斥 ???????????????? 互斥???????? 互斥

意向獨占鎖 互斥 ???????? 不互斥 ???????????? 互斥 ???????? 不互斥

共享鎖 ???????? 互斥 ???????? 互斥? ? ? ? ? ? ? ? 不互斥???? 不互斥

意向共享鎖 ????互斥 ???? 不互斥 ???????????? 不互斥???? 不互斥

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容