MySql 中锁的定义
表級(jí)鎖,一般是指表結(jié)構(gòu)共享鎖鎖,是不可對(duì)該表執(zhí)行DDL操作,但對(duì)DML操作都不限制
?
mysql鎖機(jī)制分為表級(jí)鎖和行級(jí)鎖,本文就和大家分享一下我對(duì)mysql中行級(jí)鎖中的共享鎖與排他鎖進(jìn)行分享交流。
共享鎖又稱為讀鎖,簡(jiǎn)稱S鎖,顧名思義,共享鎖就是多個(gè)事務(wù)對(duì)于同一數(shù)據(jù)可以共享一把鎖,都能訪問到數(shù)據(jù),但是只能讀不能修改。
排他鎖又稱為寫鎖,簡(jiǎn)稱X鎖,顧名思義,排他鎖就是不能與其他所并存,如一個(gè)事務(wù)獲取了一個(gè)數(shù)據(jù)行的排他鎖,其他事務(wù)就不能再獲取該行的其他鎖,包括共享鎖和排他鎖,但是獲取排他鎖的事務(wù)是可以對(duì)數(shù)據(jù)就行讀取和修改。
對(duì)于共享鎖大家可能很好理解,就是多個(gè)事務(wù)只能讀數(shù)據(jù)不能改數(shù)據(jù),對(duì)于排他鎖大家的理解可能就有些差別,我當(dāng)初就犯了一個(gè)錯(cuò)誤,以為排他鎖鎖住一行數(shù)據(jù)后,其他事務(wù)就不能讀取和修改該行數(shù)據(jù),其實(shí)不是這樣的。排他鎖指的是一個(gè)事務(wù)在一行數(shù)據(jù)加上排他鎖后,其他事務(wù)不能再在其上加其他的鎖。mysql InnoDB引擎默認(rèn)的修改數(shù)據(jù)語句,update,delete,insert都會(huì)自動(dòng)給涉及到的數(shù)據(jù)加上排他鎖,select語句默認(rèn)不會(huì)加任何鎖類型,如果加排他鎖可以使用select ...for update語句,加共享鎖可以使用select ... lock in share mode語句。所以加過排他鎖的數(shù)據(jù)行在其他事務(wù)種是不能修改數(shù)據(jù)的,也不能通過for update和lock in share mode鎖的方式查詢數(shù)據(jù),但可以直接通過select ...from...查詢數(shù)據(jù),因?yàn)槠胀ú樵儧]有任何鎖機(jī)制。
詳細(xì)共享鎖和排他鎖的例子請(qǐng)參考:
轉(zhuǎn)載:https://www.cnblogs.com/boblogsbo/p/5602122.html
轉(zhuǎn)載于:https://www.cnblogs.com/onetheway2018/p/9529669.html
總結(jié)
以上是生活随笔為你收集整理的MySql 中锁的定义的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TZOJ 1321 Girls and
- 下一篇: listener:监听器(加载框架配置文