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

一個(gè)需要避免的InnoDB間隙鎖

開發(fā) 項(xiàng)目管理
在為一個(gè)客戶排除死鎖問題時(shí)我遇到了一個(gè)有趣的包括InnoDB間隙鎖的情形。對于一個(gè)WHERE子句不匹配任何行的非插入的寫操作中,我預(yù)期事務(wù)應(yīng)該不會(huì)有鎖,但我錯(cuò)了。讓我們看一下這張表及示例UPDATE。

在為一個(gè)客戶排除死鎖問題時(shí)我遇到了一個(gè)有趣的包括InnoDB間隙鎖的情形。對于一個(gè)WHERE子句不匹配任何行的非插入的寫操作中,我預(yù)期事務(wù)應(yīng)該不會(huì)有鎖,但我錯(cuò)了。讓我們看一下這張表及示例UPDATE。

  1. mysql> SHOW CREATE TABLE preferences \G 
  2. *************************** 1. row *************************** 
  3.        Table: preferences 
  4. Create TableCREATE TABLE `preferences` ( 
  5.   `numericId` int(10) unsigned NOT NULL
  6.   `receiveNotifications` tinyint(1) DEFAULT NULL
  7.   PRIMARY KEY (`numericId`) 
  8. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 
  9. 1 row in set (0.00 sec) 
  10. mysql> BEGIN
  11. Query OK, 0 rows affected (0.00 sec) 
  12. mysql> SELECT COUNT(*) FROM preferences; 
  13. +----------+ 
  14. COUNT(*) | 
  15. +----------+ 
  16. |        0 | 
  17. +----------+ 
  18. 1 row in set (0.01 sec) 
  19. mysql> UPDATE preferences SET receiveNotifications='1' WHERE numericId = '2'
  20. Query OK, 0 rows affected (0.01 sec) 
  21. Rows matched: 0  Changed: 0  Warnings: 0 

InnoDB狀態(tài)顯示這個(gè)UPDATE在主索引記錄上持有了一個(gè)X鎖:

  1. ---TRANSACTION 4A18101, ACTIVE 12 sec 
  2. 2 lock struct(s), heap size 376, 1 row lock(s) 
  3. MySQL thread id 3, OS thread handle 0x7ff2200cd700, query id 35 localhost msandbox 
  4. Trx read view will not see trx with id >= 4A18102, sees < 4A18102 
  5. TABLE LOCK table `test`.`preferences` trx id 4A18101 lock mode IX 
  6. RECORD LOCKS space id 31766 page no 3 n bits 72 index `PRIMARY` of table `test`.`preferences` trx id 4A18101 lock_mode X 

這是為什么呢,Heikki在其bug報(bào)告中做了解釋,這很有意義,我知道修復(fù)起來很困難,但略帶厭惡地我又希望它能被差異化處理。為完成這篇文章,讓我證明下上面說到的死鎖情況,下面中mysql1是第一個(gè)會(huì)話,mysql2是另一個(gè),查詢的順序如下:

  1. mysql1> BEGIN
  2. Query OK, 0 rows affected (0.00 sec) 
  3. mysql1> UPDATE preferences SET receiveNotifications='1' WHERE numericId = '1'
  4. Query OK, 0 rows affected (0.00 sec) 
  5. Rows matched: 0 Changed: 0 Warnings: 0 
  6. mysql2> BEGIN
  7. Query OK, 0 rows affected (0.00 sec) 
  8. mysql2> UPDATE preferences SET receiveNotifications='1' WHERE numericId = '2'
  9. Query OK, 0 rows affected (0.00 sec) 
  10. Rows matched: 0 Changed: 0 Warnings: 0 
  11. mysql1> INSERT INTO preferences (numericId, receiveNotifications) VALUES ('1''1'); -- This one goes into LOCK WAIT 
  12. mysql2> INSERT INTO preferences (numericId, receiveNotifications) VALUES ('2''1'); 
  13. ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction 

現(xiàn)在你看到導(dǎo)致死鎖是多么的容易,因此一定要避免這種情況——如果來自于事務(wù)的INSERT部分導(dǎo)致非插入的寫操作可能不匹配任何行的話,不要這樣做,使用REPLACE INTO或使用READ-COMMITTED事務(wù)隔離。

原文鏈接:http://www.oschina.net/translate/one-more-innodb-gap-lock-to-avoid

責(zé)任編輯:陳四芳 來源: 開源中國編譯
相關(guān)推薦

2016-12-26 18:51:34

AndroidJavascriptJSONObject

2016-11-24 15:54:06

androidJSONObject

2023-12-06 07:33:20

MySQL鎖事間隙鎖

2024-01-16 12:19:08

MySQL重要機(jī)制高并發(fā)

2021-12-14 08:10:00

MySQL行鎖間隙鎖

2020-10-20 13:50:47

MySQL數(shù)據(jù)庫

2020-02-28 08:29:34

IT網(wǎng)絡(luò)信息

2022-04-19 10:29:56

外包誤區(qū)IT外包IT領(lǐng)導(dǎo)者

2023-11-06 08:35:08

表鎖行鎖間隙鎖

2022-10-11 07:20:56

YAML字符串語言

2025-06-04 02:55:00

MySQL意向鎖記錄鎖

2020-02-18 20:28:23

AI人工智能

2017-08-01 09:35:03

2022-01-17 08:56:05

CSS 技巧代碼重構(gòu)

2022-04-29 11:39:28

MySQL幻讀Gap Lock

2018-04-25 06:21:57

多云云計(jì)算IT

2018-11-18 16:31:14

Kubernetes監(jiān)控容器

2019-08-22 08:53:57

IT現(xiàn)代化數(shù)字化轉(zhuǎn)型

2023-01-31 08:00:00

開源開發(fā)軟件

2019-08-30 11:12:52

防火墻網(wǎng)絡(luò)安全
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 国产黄色在线 | 国精日本亚洲欧州国产中文久久 | 91视频在线 | 欧美自拍日韩 | 国产精品黄色 | 在线视频一区二区 | 精品视频一二区 | 国产伦精品一区二区三区在线 | 国产欧美精品 | 国产69精品久久99不卡免费版 | 久久中文字幕一区 | 亚洲国产一区二区三区在线观看 | 免费看国产a | 国产精品国产三级国产aⅴ中文 | 欧美精品一区二区免费 | 亚洲精品中文字幕 | 91国内在线观看 | 久久不射网 | 亚洲国产精品suv | 国产成人综合网 | 青久草视频| 成年人免费看 | 特一级毛片| 国产在线永久免费 | 天天干天天玩天天操 | 在线观看免费av片 | 国产精品视频偷伦精品视频 | 亚洲国产一区二区三区, | 中文字幕在线观看成人 | 在线免费观看成人 | 91精品国产91久久综合桃花 | 国产黄色av网站 | 中文字幕一区二区三区四区 | 成人精品一区二区三区中文字幕 | 亚洲成人综合社区 | 欧美中文字幕一区二区三区 | 美女久久视频 | 毛片一区二区三区 | 日韩成人在线一区 | 久久中文免费视频 | 超碰在线免费 |