国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

mysql 面試(四) 整理之mysql 索引 鎖

2019-11-08 20:58:52
字體:
來源:轉載
供稿:網友

4.1     行鎖是怎么實現的,為什么?

InnoDB存儲引擎的鎖是通過加在索引上面完成的,如果表沒有創建索引,InnoDB會自動創建一個6字節的自增索引。 因為Innodb是索引組織表,通過索引去找對應的數據行。

4.2MySQL 鎖機制

鎖類型分別為:record-lock, gap鎖, next-key鎖

(1)記錄鎖:在行相應的索引記錄上的鎖

(2)gap鎖:是在索引記錄間歇上的鎖

(3)next-key鎖:是記錄鎖和在此索引記錄之前的gap上的鎖的結合

(4)innodb行鎖的加鎖方式: 當根據innodb表的索引搜索時, 設置共享鎖和排它鎖在索引記錄上

(5)行鎖實際上是索引鎖

(6)innodb_locks_unsafe_for_binlog:

當為0時(disabled), 這個開啟了gap鎖;設置為1,關閉gap鎖(這會導致幻讀,引起主從同步不一致)。

(7)開啟這個選項innodb_locks_unsafe_for_binlog并不關閉gap鎖在外鍵檢查方面的作用

(8)在UPDATE和DELETE時,innodb首先對遇到的每一行加行鎖;如果innodb_locks_unsafe_for_binlog開啟,那么不匹配的行上的鎖將被釋放;如果未開啟,不匹配的行上的鎖也不釋放,直到事務結束

(9)即使innodb表上沒有索引,也會使用內部的clustered index來進行鎖定;

(10)innodb除主鍵的索引之外的其他索引和clustered index在內部是建立一張索引對應表;當利用其他索引掃描記錄時,對其他索引加的鎖最后都轉換為對clustered index加的鎖

(11)在UPDATE模式下,對檢索中遇到的記錄加排它鎖;在INSERT...SELECT模式下,對檢索中遇到的記錄加共享鎖;在INSERT模式下,對檢索中遇到的記錄加排它鎖;在DELETE模式下,對檢索中遇到的記錄加排它鎖

(12)在使用unique index進行搜索,并且只返回一行時,不使用gap鎖

(13)next-key鎖舉例:假設索引包括10,11,13,20,則next-key鎖為:(negative infinity, 10],(10, 11],(11,13],(13, 20],(20, positive infinity)

(14)使用next-key鎖可以預防幻讀

(15)gap鎖在read_committed下或當innodb_locks_unsafe_for_binlog=on時被關閉;當在這種情況下時,不匹配的行上的鎖將被釋放

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 玉山县| 广汉市| 军事| 遂溪县| 大厂| 新郑市| 昌图县| 宁蒗| 吉安市| 疏附县| 池州市| 托克逊县| 五指山市| 博乐市| 尚义县| 鲜城| 民丰县| 西乡县| 安塞县| 德阳市| 安阳县| 五家渠市| 分宜县| 子长县| 华容县| 汤原县| 焦作市| 平顶山市| 灵丘县| 汕头市| 乌恰县| 宜兰县| 万宁市| 夹江县| 雷州市| 赞皇县| 拉孜县| 南涧| 苏尼特右旗| 万盛区| 梓潼县|