mysql 隔離等級和鎖相關

來源:互聯網
上載者:User

標籤:mysql   鎖   隔離等級   


mysql資料庫中存在三種鎖,間隙鎖(gap-lock) , 行鎖(record-lock),gap-record-lock

gap-record-lock 是間隙鎖和行鎖的組合,


間隙鎖(gap lock) 

行鎖(record lock)

record-lock:



測試表:

CREATE TABLE `tt` (

  `tid` int(11) NOT NULL DEFAULT ‘0‘,

  `tname` varchar(10) DEFAULT NULL,

  `tage` tinyint(4) DEFAULT NULL,

  `taddr` varchar(100) DEFAULT NULL,

  `tmark` varchar(1000) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8



無論在什麼隔離等級下,以下操作都是要擷取表的metadata鎖的

truncate,DDL(alter,drop,create),添加索引 會對錶添加metadata鎖,也就是會鎖定整張表



在隔離等級是rr的情況下,delete,update,insert的鎖的表現形式


delete from tt where tid = 1  

update tt set taddr = "BeiJing" where tid = 1


1.tid為主鍵 

(1).1存在於表中就對記錄添加record-lock

(2).1不存在於表中gap-lock,行記錄的間隙鎖


2.tid為普通欄位(沒有索引)就對所有記錄添加,record-lock,grap-lock

 

3.tid為非聚集唯一索引

(1).1存在於表中就對記錄添加record-lock,會鎖定索引值和行資料

(2).1不存在於表中就添加gap-lock,會鎖定索引的某一個範圍值


4.tid為非聚集非唯一索引

(1).1存在於表中就添加record-lock,gap-lock,會對行記錄,索引記錄添加record-lock,會鎖定索引的某一個範圍

(2).1不存在於表中,會鎖定索引的某個範圍



insert 

添加意向插入鎖,檢查某個範圍是否被鎖定

間隙鎖只會影響插入,不會影響update和delete


1.只有主鍵對記錄添加X鎖

2.有唯一鍵,會對唯一索引值添加S鎖

3.有主鍵和唯一鍵,對主索引值添加x,對唯一索引值添加s


insert into test1  select * from test 

在rr情況下test 添加的是s鎖,test1 添加的X 



在隔離等級是rc的情況下,delete,update,insert的鎖的表現形式


delete from tt where tid = 1  

update tt set taddr = "BeiJing" where tid = 1


1.tid為主鍵 

(1).1存在於表中就對記錄添加record-lock

(2).1不存在於表中,不添加鎖


2.tid為普通欄位(沒有索引)就對所有記錄添加鎖


3.tid為非聚集唯一索引

(1).1存在於表中就對記錄添加record-lock,會鎖定索引值和行資料

(2).1不存在於表中不鎖定資料


4.tid為非聚集非唯一索引

(1).1存在於表中就添加record-lock,會對行記錄,索引記錄添加record-lock

(2).1不存在於表中不添加鎖



insert

1.只有主鍵對記錄添加X鎖

2.有唯一鍵,會對唯一索引值添加S鎖

3.有主鍵和唯一鍵,對主索引值添加x,對唯一索引值添加s



insert into test1  select * from test 

在rc情況下test 不添加鎖,test1添加x鎖



select *  into outfile  from  test   不鎖定test表(rr,rc都有驗證)



本文出自 “SQLServer MySQL” 部落格,請務必保留此出處http://dwchaoyue.blog.51cto.com/2826417/1879590

mysql 隔離等級和鎖相關

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.