成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

別廢話,各種SQL到底加了什么鎖?

數(shù)據(jù)庫(kù) MySQL
MySQL加的鎖,和事務(wù)隔離級(jí)別相關(guān),又和索引相關(guān),下面,我們嘗試花兩分鐘講講看。

有朋友留言,問(wèn)能不能花2分鐘講講,MySQL的各類(lèi)SQL語(yǔ)句,究竟加了什么鎖?

額,MySQL加的鎖,和事務(wù)隔離級(jí)別相關(guān),又和索引相關(guān),嘗試花2分鐘講講看。

畫(huà)外音:這2分鐘需要的輔助知識(shí),都已經(jīng)附帶了鏈接,貼心吧!

第一類(lèi),普通select加什么鎖?

(1)在讀未提交(Read Uncommitted),讀提交(Read Committed, RC),可重復(fù)讀(Repeated Read, RR)這三種事務(wù)隔離級(jí)別下,普通select使用快照讀(snpashot read),不加鎖,并發(fā)非常高;

(2)在串行化(Serializable)這種事務(wù)的隔離級(jí)別下,普通select會(huì)升級(jí)為select ... in share mode;

【快照讀】輔助閱讀:《??InnoDB,并發(fā)如此之高的原因??》

第二類(lèi),加鎖select加什么鎖?

加鎖select主要是指:

  • select ... for update
  • select ... in share mode

(1)如果,在唯一索引(unique index)上使用唯一的查詢條件(unique search condition),會(huì)使用記錄鎖(record lock),而不會(huì)封鎖記錄之間的間隔,即不會(huì)使用間隙鎖(gap lock)與臨鍵鎖(next-key lock);

【記錄鎖,間隙鎖,臨鍵鎖】輔助閱讀:《??InnoDB里的七種鎖??》

舉個(gè)栗子,假設(shè)有InnoDB表:

t(id PK, name);

表中有三條記錄:

  • shenjian
  • zhangsan
  • lisi

SQL語(yǔ)句:

select * from t where id=1 for update;

只會(huì)封鎖記錄,而不會(huì)封鎖區(qū)間。

(2)其他的查詢條件和索引條件,InnoDB會(huì)封鎖被掃描的索引范圍,并使用間隙鎖與臨鍵鎖,避免索引范圍區(qū)間插入記錄;

第三類(lèi),update與delete加什么鎖?

(1)和加鎖select類(lèi)似,如果在唯一索引上使用唯一的查詢條件來(lái)update/delete,例如:update t set name=xxx where id=1;也只加記錄鎖;

(2)否則,符合查詢條件的索引記錄之前,都會(huì)加排他臨鍵鎖(exclusive next-key lock),來(lái)封鎖索引記錄與之前的區(qū)間;

(3)尤其需要特殊說(shuō)明的是,如果update的是聚集索引(clustered index)記錄,則對(duì)應(yīng)的普通索引(secondary index)記錄也會(huì)被隱式加鎖,這是由InnoDB索引的實(shí)現(xiàn)機(jī)制決定的:普通索引存儲(chǔ)PK的值,檢索普通索引本質(zhì)上要二次掃描聚集索引。

【索引底層實(shí)現(xiàn)】輔助閱讀:《??索引,底層是如何實(shí)現(xiàn)的???》

【聚集索引與普通索引的實(shí)現(xiàn)差異】輔助閱讀:《??InnoDB,聚集索引與普通索引有什么不同???》

第四類(lèi),insert加什么鎖?

同樣是寫(xiě)操作,insert和update與delete不同,它會(huì)用排它鎖封鎖被插入的索引記錄,而不會(huì)封鎖記錄之前的范圍。

同時(shí),會(huì)在插入?yún)^(qū)間加插入意向鎖(insert intention lock),但這個(gè)并不會(huì)真正封鎖區(qū)間,也不會(huì)阻止相同區(qū)間的不同KEY插入。

【插入意向鎖】輔助閱讀:《??InnoDB里的七種鎖??》

了解不同SQL語(yǔ)句的加鎖,對(duì)于分析多個(gè)事務(wù)之間的并發(fā)與互斥,以及事務(wù)死鎖,非常有幫助。

畫(huà)外音:文章的參考資料為MySQL官網(wǎng),以及樓主對(duì)MySQL的理解,版本基于5.6,歡迎探討。

希望這2分鐘,大家有收獲。

來(lái)源鏈接:

http://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651969353&idx=1&sn=9ded4fe3fcfc9e3daf1ce52054671b4a&chksm=bd2d62958a5aeb835405358634ffea69936a6dd3941dd2a338401661c77393838879c043db69&mpshare=1&scene=23&srcid=0118Za6sAKYOr1w7CpQHHEMB&sharer_sharetime=1642517052262&sharer_shareid=9603544ecd5d7f3dc66603ae089636f4#rd

責(zé)任編輯:趙寧寧 來(lái)源: 架構(gòu)師之路
相關(guān)推薦

2023-01-11 09:56:41

索引SQL

2024-05-13 12:44:00

InnodbMySQL行級(jí)鎖

2023-01-31 08:44:50

SQL語(yǔ)句查詢

2023-02-02 11:53:44

nolock關(guān)鍵詞SQLserver

2011-04-25 14:19:26

噴墨打印機(jī)

2020-12-15 06:57:24

java服務(wù)器

2023-05-18 08:38:13

Java鎖機(jī)制

2022-05-26 23:36:36

SQLMySQL數(shù)據(jù)

2010-11-09 13:58:03

SQL Server鎖

2021-10-28 21:54:00

RedCap網(wǎng)絡(luò)

2012-04-22 20:54:33

Android

2023-09-26 00:01:48

DSP光模塊技術(shù)

2024-08-27 08:16:01

2021-02-06 22:33:35

區(qū)塊鏈驗(yàn)證網(wǎng)絡(luò)

2021-11-26 09:53:55

MYSQL開(kāi)發(fā)數(shù)據(jù)庫(kù)

2012-05-05 08:58:16

Android

2019-08-21 08:25:23

IaaS云計(jì)算數(shù)據(jù)中心

2022-06-16 07:04:12

RedCap5G技術(shù)

2020-10-29 09:19:11

索引查詢存儲(chǔ)

2013-11-29 10:02:41

移動(dòng)廣告鎖屏分發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 蜜桃av鲁一鲁一鲁一鲁 | 99久久精品免费看国产高清 | 久久久精品久久 | 欧美 日韩 国产 一区 | 日韩三| 亚洲人成人一区二区在线观看 | 一区二区三区视频 | 亚洲国产精品suv | 中文字幕电影在线观看 | 欧美中文字幕一区二区三区 | 在线视频91 | 婷婷在线网站 | 亚洲欧美一区二区三区国产精品 | 亚洲国产一区视频 | 精品久久久久久久久久久 | 日韩三级在线 | 在线观看免费观看在线91 | 99热最新| 成人精品视频免费 | 国产精品久久久久久影院8一贰佰 | 国产欧美一区二区三区日本久久久 | 免费人成在线观看网站 | 成年人免费在线视频 | 在线看免费 | 少妇无套高潮一二三区 | 国产精品九九视频 | 在线观看国产www | 国产成人在线视频播放 | 欧美日韩国产一区二区三区 | 91精品www | 香蕉久久a毛片 | 免费黄色网址视频 | 国产色婷婷精品综合在线手机播放 | 中文字幕在线免费视频 | 精品欧美黑人一区二区三区 | 自拍中文字幕 | 久久国产精彩视频 | 久久亚洲欧美日韩精品专区 | 人人干在线| 久久丝袜视频 | 巨大荫蒂视频欧美另类大 |