欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

InnoDB怎么使用意向鎖

這篇文章主要為大家展示了“InnoDB怎么使用意向鎖”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學習一下“InnoDB怎么使用意向鎖”這篇文章吧。

為林芝等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及林芝網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為成都網(wǎng)站設計、成都網(wǎng)站制作、林芝網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

一,共享/排它鎖(Shared and Exclusive Locks)

在InnoDB里當然也實現(xiàn)了標準的行級鎖(row-level locking),共享/排它鎖:

(1)事務拿到某一行記錄的共享S鎖,才可以讀取這一行;

(2)事務拿到某一行記錄的排它X鎖,才可以修改或者刪除這一行;

其兼容互斥表如下:

          S          X

S      兼容      互斥

X      互斥      互斥

即:

(1)多個事務可以拿到一把S鎖,讀讀可以并行;

(2)而只有一個事務可以拿到X鎖,寫寫/讀寫必須互斥;

共享/排它鎖的潛在問題是,不能充分的并行,解決思路是數(shù)據(jù)多版本,具體思路在《 InnoDB并發(fā)為何這么高? 》里介紹過,這里不再深入展開。

二,意向鎖(Intention Locks)

InnoDB支持多粒度鎖(multiple granularity locking),它允許行級鎖與表級鎖共存,實際應用中,InnoDB使用的是意向鎖。

意向鎖是指,未來的某個時刻,事務可能要加共享/排它鎖了,先提前聲明一個意向。

意向鎖有這樣一些特點:

(1)首先,意向鎖,是一個表級別的鎖(table-level locking);

(2)意向鎖分為:

  • 意向共享鎖(intention shared lock, IS),它預示著,事務有意向?qū)Ρ碇械哪承┬屑庸蚕鞸鎖

  • 意向排它鎖(intention exclusive lock, IX),它預示著,事務有意向?qū)Ρ碇械哪承┬屑优潘黊鎖

舉個例子:

select ... lock in share mode,要設置IS鎖;

select ... for update,要設置IX鎖;

(3)意向鎖協(xié)議(intention locking protocol)并不復雜:

  • 事務要獲得某些行的S鎖,必須先獲得表的IS鎖

  • 事務要獲得某些行的X鎖,必須先獲得表的IX鎖

(4)由于意向鎖僅僅表明意向,它其實是比較弱的鎖,意向鎖之間并不相互互斥,而是可以并行,其兼容互斥表如下:

          IS          IX

IS      兼容      兼容

IX      兼容      兼容

(5)額,既然意向鎖之間都相互兼容,那其意義在哪里呢?它會與共享鎖/排它鎖互斥,其兼容互斥表如下:

          S          X

IS      兼容      互斥

IX      互斥      互斥

畫外音:排它鎖是很強的鎖,不與其他類型的鎖兼容。這也很好理解,修改和刪除某一行的時候,必須獲得強鎖,禁止這一行上的其他并發(fā),以保障數(shù)據(jù)的一致性。

三,插入意向鎖(Insert Intention Locks)

對已有數(shù)據(jù)行的修改與刪除,必須加強互斥鎖X鎖,那對于數(shù)據(jù)的插入,是否還需要加這么強的鎖,來實施互斥呢?插入意向鎖,孕育而生。

插入意向鎖,是間隙鎖(Gap Locks)的一種(所以,也是實施在索引上的),它是專門針對insert操作的。

畫外音:有點尷尬,間隙鎖下一篇文章才會介紹,暫且理解為,它是一種實施在索引上,鎖定索引某個區(qū)間范圍的鎖。

它的玩法是:

多個事務,在同一個索引,同一個范圍區(qū)間插入記錄時,如果插入的位置不沖突,不會阻塞彼此。

畫外音:官網(wǎng)的說法是

Insert Intention Lock signals the intent to insert in such a way that multiple transactions inserting into the same index gap need not wait for each other if they are not inserting at the same position within the gap.

這樣,之前挖坑的例子,就能夠解答了。

在MySQL,InnoDB,RR下:

t(id unique PK, name);

數(shù)據(jù)表中有數(shù)據(jù):

10, shenjian

20, zhangsan

30, lisi

事務A先執(zhí)行,在10與20兩條記錄中插入了一行,還未提交:

insert into t values(11, xxx);

事務B后執(zhí)行,也在10與20兩條記錄中插入了一行:

insert into t values(12, ooo);

(1)會使用什么鎖?

(2)事務B會不會被阻塞呢?

回答:雖然事務隔離級別是RR,雖然是同一個索引,雖然是同一個區(qū)間,但插入的記錄并不沖突,故這里:

  • 使用的是插入意向鎖

  • 并不會阻塞事務B

思路總結(jié)

(1)InnoDB使用共享鎖,可以提高讀讀并發(fā);

(2)為了保證數(shù)據(jù)強一致,InnoDB使用強互斥鎖,保證同一行記錄修改與刪除的串行性;

(3)InnoDB使用插入意向鎖,可以提高插入并發(fā);

結(jié)尾

假設不是插入并發(fā),而是讀寫并發(fā),又會是什么樣的結(jié)果呢?

MySQL,InnoDB,默認的隔離級別(RR)。

t(id unique PK, name);

數(shù)據(jù)表中有數(shù)據(jù):

10, shenjian

20, zhangsan

30, lisi

事務A先執(zhí)行,查詢了一些記錄,還未提交:

select * from t where id>10; 

事務B后執(zhí)行,在10與20兩條記錄中插入了一行:

insert into t values(11, xxx);

以上是“InnoDB怎么使用意向鎖”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

分享文章:InnoDB怎么使用意向鎖
新聞來源:http://aaarwkj.com/article44/pdishe.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)站內(nèi)鏈、品牌網(wǎng)站設計、品牌網(wǎng)站制作、網(wǎng)站收錄App設計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
欧美精品蜜桃激情一区久久| 一本之道高清久久久首页| 九九免费在线视频观看| 国产三级一区二区不卡| 大胆丰满邻居少妇在线观看| 综合国产精品久久久久久| 丰满少妇一区二区三区在线观看| 无遮挡动漫网站免费观看| 性知音国产精品粉色视频| 国产精品午夜视频免费观看| 日本美女午夜福利视频| 黄片视频免费在线播放大全| 日本韩国欧美成人精品| 欧美日韩免费一区二三区| 国产亚洲欧美日韩各类| 91香蕉国产在线观看| 亚洲国产日韩欧美综合久久| 国产精品国产亚洲精品| 日韩av熟女人妻一区二| 久久精品性少妇一区=区三区| 亚洲成在人线免费观看| 蜜臀av在线播放黑丝| 免费高清av一区二区| 98热这里只有精品视频| 真实国产熟女一区二区三区| 蜜桃av噜噜一区二区三| 色婷婷亚洲婷婷亚洲最大| 国产亚洲视频一区二区观看| 日本少妇人妻中文字幕| 蜜桃av一区二区三区在线| 日本av电影一区二区三区四区| 中文字幕一区日韩欧美| 免费在线黄色生活大片| 欧美精品在线观看不卡一区| 亚洲性图中文字幕在线| 日韩欧美性生活免费观看| 一区二区三区日韩国产电影| 日本中文字幕激情在线| 亚洲乱码国产乱码精品| 欧美日本一区二区四区| 亚洲三级av在线播放|