日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql ix is_关于MySQL中的共享锁(S)、排它锁(X)、意向共享锁(IS)、意向排它锁(IX)...

發(fā)布時間:2023/12/18 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql ix is_关于MySQL中的共享锁(S)、排它锁(X)、意向共享锁(IS)、意向排它锁(IX)... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一.S鎖和X鎖:S鎖和X鎖都屬于行數(shù)

二.意向鎖:表鎖,相互兼容,表明“某個事務持有了鎖、或準備去持有鎖”

1、意向鎖的存在是為了協(xié)調行鎖和表鎖的關系,支持多粒度(表鎖與行鎖)的鎖并存。

2、

1)意向共享鎖(IS鎖):事務在請求S鎖前,要先獲得IS鎖

2)意向排他鎖(IX鎖):事務在請求X鎖前,要先獲得IX鎖

3、例子:事務A修改user表的記錄r,會給記錄r上一把行級的排他鎖(X),同時會給user表上一把意向排他鎖(IX),這時事務B要給user表上一個表級的排他鎖就會被阻塞。意向鎖通過這種方式實現(xiàn)了行鎖和表鎖共存且滿足事務隔離性的要求。

q1:為什么意向鎖是表級鎖呢?

當我們需要加一個排他鎖時,需要根據意向鎖去判斷表中有沒有數(shù)據行被鎖定(行鎖);

(1)如果意向鎖是行鎖,則需要遍歷每一行數(shù)據去確認;

(2)如果意向鎖是表鎖,則只需要判斷一次即可知道有沒數(shù)據行被鎖定,提升性能。

q2:意向鎖怎么支持表鎖和行鎖并存?

(1)首先明確并存的概念是指數(shù)據庫同時支持表、行鎖,而不是任何情況都支持一個表中同時有一個事務A持有行鎖、又有一個事務B持有表鎖,因為表一旦被上了一個表級的寫鎖,肯定不能再上一個行級的鎖。

(2)如果事務A對某一行上鎖,其他事務就不可能修改這一行。這與“事務B鎖住整個表就能修改表中的任意一行”形成了沖突。所以,沒有意向鎖的時候,讓行鎖與表鎖共存,就會帶來很多問題。于是有了意向鎖的出現(xiàn),如q1的答案中,數(shù)據庫不需要在檢查每一行數(shù)據是否有鎖,而是直接判斷一次意向鎖是否存在即可,能提升很多性能。

三.下圖表示意向鎖和共享鎖、排他鎖的兼容關系。

1.當事務A對某個數(shù)據范圍(行或表)上了“某鎖”后,另一個事務B是否能在這個數(shù)據范圍上“某鎖”。

2.意向鎖相互兼容,因為IX、IS只是表明申請更低層次級別元素(比如 page、記錄)的X、S操作。

3.表級S鎖和X、IX鎖不兼容:因為上了表級S鎖后,不允許其他事務再加X鎖。

4.表級X鎖和 IS、IX、S、X不兼容:因為上了表級X鎖后,會修改數(shù)據,所以即使是行級排他鎖,因為表級鎖定的行肯定包括行級鎖定的行,所以表級X和IX、X都不兼容。

注意:上了行級X鎖后,行級X鎖不會因為有別的事務上了IX而堵塞,一個mysql是允許多個行級X鎖同時存在的,只要他們不是針對相同的數(shù)據行。

————————————————版權聲明:本文為CSDN博主「本兮言」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權協(xié)議,轉載請附上原文出處鏈接及本聲明。原文鏈接:https://blog.csdn.net/ligupeng7929/article/details/89216881

總結

以上是生活随笔為你收集整理的mysql ix is_关于MySQL中的共享锁(S)、排它锁(X)、意向共享锁(IS)、意向排它锁(IX)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。