国产探花免费观看_亚洲丰满少妇自慰呻吟_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時被關閉;當在這種情況下時,不匹配的行上的鎖將被釋放

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安西县| 海伦市| 徐州市| 治县。| 宣城市| 海阳市| 启东市| 故城县| 景德镇市| 高邑县| 息烽县| 正镶白旗| 海丰县| 毕节市| 冷水江市| 庄浪县| 永福县| 永吉县| 洛浦县| 旺苍县| 兰西县| 盐津县| 托里县| 建昌县| 红河县| 屯门区| 大同市| 霞浦县| 安义县| 忻城县| 赣州市| 连江县| 十堰市| 龙游县| 扎兰屯市| 页游| 东平县| 巧家县| 石阡县| 石阡县| 防城港市|