Mysql next-locking 間隙鎖
mysql innodb間隙鎖就是不僅僅鎖住所需要的行(如果鎖住的這行不存在)還會鎖住一個範圍的行,這個範圍依據鎖住的這行而定。上下剛好是兩個相鄰索引葉節點的範圍。包含下範圍,不包含上範圍。
eg:
t表的x列有索引,
session 1:
mysql> select x,a from t where x>200 for update;
+-------+------+
| x | a |
+-------+------+
| 202 | NULL |
| 202 | NULL |
| 300 | NULL |
| 300 | NULL |
| 500 | NULL |
| 3040 | NULL |
| 3040 | NULL |
| 30401 | NULL |
+-------+------+
8 rows in set (0.00 sec)
mysql> update t set a=600 where x=501;
Query OK, 1 row affected (8.55 sec)
Rows matched: 1 Changed: 1 Warnings: 0
這樣就會鎖住 [500,3040) 測試中501下界是500,上界是3039
此時插入x值[500,3030)範圍時,會等待
session 2:
mysql> insert into t(x) values(500);
等待
mysql> insert into t(x) values(400);
Query OK, 1 row affected (0.00 sec) 400不在這個範圍中間,可以插入
mysql> insert into t(x) values(600);
等待
mysql> insert into t(x) values(3040);
Query OK, 1 row affected (0.00 sec) 3040不在這個範圍
間隙鎖是否起作用,還有一個引數 innodb_locks_unsafe_for_binlog
起作用。
預設是關閉的,即間隙鎖是起作用的,
設定為1 ,間隙鎖不起作用,但是開啟這個引數會對binlog的記錄順序產生一定影響,從而在複製和恢復時,就會導致資料不一致,這點需要注意。
這個引數不能動態修改,只能在引數檔案中設定,然後重啟mysql服務生效。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22418990/viewspace-753572/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【鎖】MySQL間隙鎖MySql
- mysql innodb間隙鎖示例MySql
- 間隙鎖
- MySQL 行級鎖之 間隙鎖、臨鍵鎖MySql
- MySQL行鎖、表鎖、間隙鎖,你都瞭解嗎MySql
- MySQL記錄鎖、間隙鎖、臨鍵鎖小案例演示MySql
- 一文搞懂MySQL行鎖、表鎖、間隙鎖詳解MySql
- 瞭解下Mysql的間隙鎖及產生的原因MySql
- 如何開啟和關閉MySQL 間隙鎖(gap lock)MySql
- MySQL innodb 的間隙鎖定(next-key locking)MySql
- 詳解 MySql InnoDB 中的三種行鎖(記錄鎖、間隙鎖與臨鍵鎖)MySql
- InnoDB常用鎖總結(行鎖、間隙鎖、臨鍵鎖、表鎖)
- Mysql加鎖過程詳解(9)-innodb下的記錄鎖,間隙鎖,next-key鎖MySql
- MySQL 透過 Next-Key Locking 技術(行鎖+間隙鎖)避免幻讀問題MySql
- mysql從庫gtid間隙問題MySql
- 死鎖問題排查過程-間隙鎖的復現以及解決
- 面試突擊:MVCC 和間隙鎖有什麼區別?面試MVC
- UICollectionView間隙的坑UIView
- MySQL鎖(讀鎖、共享鎖、寫鎖、S鎖、排它鎖、獨佔鎖、X鎖、表鎖、意向鎖、自增鎖、MDL鎖、RL鎖、GL鎖、NKL鎖、插入意向鎖、間隙鎖、頁鎖、悲觀鎖、樂觀鎖、隱式鎖、顯示鎖、全域性鎖、死鎖)MySql
- [譯]Stack View 自定義間隙View
- 如何讓BootStrap柵格之間留出空白間隙呢?boot
- 巧妙讓兩個span元素中間的空格不再有間隙
- mysql鎖之死鎖MySql
- 工作間隙整理學習內容的意外收穫
- MySQL鎖MySql
- mysql 鎖MySql
- [Mysql]鎖MySql
- 前端inline元素間隙問題解決辦法前端inline
- 解決img標籤與其它標籤間隙問題?
- 視訊+圖文串講:MySQL 行鎖、間隙鎖、Next-Key-Lock、以及實現記錄存在的話就更新,如果記錄不存在的話就插入如何保證併發安全MySql
- MySQL 死鎖和鎖等待MySql
- 【MySQL】MySQL中的鎖MySql
- 刪除display:inline-block元素之間的縫隙inlineBloC
- 有間隙卡片縮放/無縫CollectionViewBanner無限輪播圖View
- MySQL表鎖MySql
- MySQL的鎖MySql
- MySQL -- 表鎖MySql
- MySQL -- 行鎖MySql