1.鎖?
1.1何為鎖
鎖在現(xiàn)實(shí)中的意義為:封閉的器物,以鑰匙或暗碼開(kāi)啟。在計(jì)算機(jī)中的鎖一般用來(lái)管理對(duì)共享資源的并發(fā)訪問(wèn),比如我們java同學(xué)熟悉的Lock,synchronized等都是我們常見(jiàn)的鎖。當(dāng)然在我們的數(shù)據(jù)庫(kù)中也有鎖用來(lái)控制資源的并發(fā)訪問(wèn),這也是數(shù)據(jù)庫(kù)和文件系統(tǒng)的區(qū)別之一。
1.2為什么要懂?dāng)?shù)據(jù)庫(kù)鎖?
通常來(lái)說(shuō)對(duì)于一般的開(kāi)發(fā)人員,在使用數(shù)據(jù)庫(kù)的時(shí)候一般懂點(diǎn)DQL(select),DML(insert,update,delete)就夠了。
小明是一個(gè)剛剛畢業(yè)在互聯(lián)網(wǎng)公司工作的Java開(kāi)發(fā)工程師,平常的工作就是完成PM的需求,當(dāng)然在完成需求的同時(shí)肯定逃脫不了spring,springmvc,mybatis的那一套框架,所以一般來(lái)說(shuō)sql還是自己手寫(xiě),遇到比較復(fù)雜的sql會(huì)從網(wǎng)上去百度一下。對(duì)于一些比較重要操作,比如交易啊這些,小明會(huì)用spring的事務(wù)來(lái)對(duì)數(shù)據(jù)庫(kù)的事務(wù)進(jìn)行管理,由于數(shù)據(jù)量比較小目前還涉及不了分布式事務(wù)。
前幾個(gè)月小明過(guò)得都還風(fēng)調(diào)雨順,知道有一天,小明接了一個(gè)需求,商家有個(gè)配置項(xiàng),叫優(yōu)惠配置項(xiàng),可以配置買(mǎi)一送一,買(mǎi)一送二等等規(guī)則,當(dāng)然這些配置是批量傳輸給后端的,這樣就有個(gè)問(wèn)題每個(gè)規(guī)則都得去匹配他到底是刪除還是添加還是修改,這樣后端邏輯就比較麻煩,聰明的小明想到了一個(gè)辦法,直接刪除這個(gè)商家的配置,然后全部添加進(jìn)去。小明馬上開(kāi)發(fā)完畢,成功上線。
開(kāi)始上線沒(méi)什么毛病,但是日志經(jīng)常會(huì)出現(xiàn)一些mysql-insert-deadlock異常。由于小明經(jīng)驗(yàn)比較淺,對(duì)于這類(lèi)型的問(wèn)題第一次遇見(jiàn),于是去問(wèn)了他們組的老司機(jī)-大紅,大紅一看見(jiàn)這個(gè)問(wèn)題,然后看了他的代碼之后,輸出了幾個(gè)命令看了幾個(gè)日志,馬上定位了問(wèn)題,告訴了小明:這是因?yàn)閐elete的時(shí)候會(huì)加間隙鎖,但是間隙鎖之間卻可以兼容,但是插入新的數(shù)據(jù)的時(shí)候就會(huì)因?yàn)椴迦胍庀蜴i會(huì)被間隙鎖阻塞,導(dǎo)致雙方被資源被互占,導(dǎo)致死鎖。小明聽(tīng)了之后似懂非懂,由于大紅的事情比較多,不方便一直麻煩大紅,所以決定自己下來(lái)自己想。下班過(guò)后,小明回想大紅說(shuō)的話,什么是間隙鎖,什么是插入意向鎖,看來(lái)作為開(kāi)發(fā)者對(duì)數(shù)據(jù)庫(kù)不應(yīng)該只會(huì)寫(xiě)SQL啊,不然遇到一些疑難雜癥完全沒(méi)法解決啊。想完,于是小明就踏上了學(xué)習(xí)Mysql鎖這條不歸之路。
2.InnoDB
2.1mysql體系架構(gòu)
小明沒(méi)有著急去了解鎖這方面的知識(shí),他首先先了解了下Mysql體系架構(gòu):
可以發(fā)現(xiàn)Mysql由連接池組件、管理服務(wù)和工具組件、sql接口組件、查詢分析器組件、優(yōu)化器組件、 緩沖組件、插件式存儲(chǔ)引擎、物理文件組成。
小明發(fā)現(xiàn)在mysql中存儲(chǔ)引擎是以插件的方式提供的,在Mysql中有多種存儲(chǔ)引擎,每個(gè)存儲(chǔ)引擎都有自己的特點(diǎn)。隨后小明在命令行中打出了:
show engines \G;
當(dāng)前文章:開(kāi)發(fā)人員為什么必須要了解數(shù)據(jù)庫(kù)鎖詳解-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://vcdvsql.cn/article40/dchdeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、品牌網(wǎng)站設(shè)計(jì)、自適應(yīng)網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站導(dǎo)航、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容