婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > MySQL鎖阻塞的深入分析

MySQL鎖阻塞的深入分析

熱門標(biāo)簽:常州電銷外呼系統(tǒng)一般多少錢 沃克斯電梯外呼線路圖 地圖標(biāo)注被騙三百怎么辦 房產(chǎn)智能外呼系統(tǒng)品牌 福州呼叫中心外呼系統(tǒng)哪家好 400電話鄭州申請(qǐng) 云南語音外呼系統(tǒng)平臺(tái) 北京人工外呼系統(tǒng)價(jià)錢 天智外呼系統(tǒng)

日常維護(hù)中,經(jīng)常會(huì)碰到線程被阻塞,導(dǎo)致數(shù)據(jù)庫響應(yīng)非常慢,下面就看看如何獲取是哪個(gè)線程導(dǎo)致了阻塞的。

1. 環(huán)境說明

RHEL 6.4 x86_64 + MySQL 5.6.19

事務(wù)隔離級(jí)別:RR

2. 測(cè)試過程

3. 查看鎖阻塞線程信息

這里用幾中方法進(jìn)行分析:

3.1  使用show processlist查看

MySQL [(none)]> show processlist;
+----+------+-----------+------+---------+------+--------------+------------------------------------------+
| Id | User | Host  | db | Command | Time | State  | Info          |
+----+------+-----------+------+---------+------+--------------+------------------------------------------+
| 2 | root | localhost | NULL | Query | 0 | init   | show processlist       |
| 3 | root | localhost | test | Query | 70 | Sending data | select count(*) from t3 a,t3 b   |
| 4 | root | localhost | test | Query | 65 | updating  | delete from emp where empno=7788   |
| 7 | root | localhost | test | Query | 68 | updating  | update emp set sal=3500 where empno=7788 |
+----+------+-----------+------+---------+------+--------------+------------------------------------------+
4 rows in set (0.00 sec)

如果數(shù)據(jù)庫存在較多線程的話,這種方法確實(shí)不太好確認(rèn)的。

3.2  直接使用show engine innodb status查看

------------
TRANSACTIONS
------------
Trx id counter 4131
Purge done for trx's n:o  4119 undo n:o  0 state: running but idle
History list length 126
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 0, not started
MySQL thread id 2, OS thread handle 0x7f953ffff700, query id 115 localhost root init
show engine innodb status
---TRANSACTION 4130, ACTIVE 41 sec starting index read
mysql tables in use 1, locked 1
LOCK WAIT 2 lock struct(s), heap size 360, 1 row lock(s)
MySQL thread id 4, OS thread handle 0x7f953ff9d700, query id 112 localhost root updating
delete from emp where empno=7788
------- TRX HAS BEEN WAITING 41 SEC FOR THIS LOCK TO BE GRANTED: ## 等待了41s
RECORD LOCKS space id 16 page no 3 n bits 88 index `PRIMARY` of table `test`.`emp` trx id 4130 lock_mode X locks rec but not gap waiting
Record lock, heap no 9 PHYSICAL RECORD: n_fields 10; compact format; info bits 0 ## 線程4在等待往test.emp中的主鍵上加X鎖,page num=3
 0: len 4; hex 80001e6c; asc l;;
 1: len 6; hex 000000001018; asc  ;;
 2: len 7; hex 91000001420084; asc  B ;;
 3: len 5; hex 53434f5454; asc SCOTT;;
 4: len 7; hex 414e414c595354; asc ANALYST;;
 5: len 4; hex 80001d8e; asc  ;;
 6: len 4; hex 208794f0; asc  ;;
 7: len 4; hex 80000bb8; asc  ;;
 8: SQL NULL;
 9: len 4; hex 80000014; asc  ;;
 
------------------
---TRANSACTION 4129, ACTIVE 45 sec starting index read
mysql tables in use 1, locked 1
LOCK WAIT 2 lock struct(s), heap size 360, 1 row lock(s)
MySQL thread id 7, OS thread handle 0x7f953ff6c700, query id 111 localhost root updating
update emp set sal=3500 where empno=7788
------- TRX HAS BEEN WAITING 45 SEC FOR THIS LOCK TO BE GRANTED: ## 等待了45s
RECORD LOCKS space id 16 page no 3 n bits 88 index `PRIMARY` of table `test`.`emp` trx id 4129 lock_mode X locks rec but not gap waiting
Record lock, heap no 9 PHYSICAL RECORD: n_fields 10; compact format; info bits 0 ## 線程7在等待往test.emp中的主鍵上加X鎖,page num=3
 0: len 4; hex 80001e6c; asc l;;
 1: len 6; hex 000000001018; asc  ;;
 2: len 7; hex 91000001420084; asc  B ;;
 3: len 5; hex 53434f5454; asc SCOTT;;
 4: len 7; hex 414e414c595354; asc ANALYST;;
 5: len 4; hex 80001d8e; asc  ;;
 6: len 4; hex 208794f0; asc  ;;
 7: len 4; hex 80000bb8; asc  ;;
 8: SQL NULL;
 9: len 4; hex 80000014; asc  ;;
 
------------------
---TRANSACTION 4128, ACTIVE 51 sec
2 lock struct(s), heap size 360, 1 row lock(s)
MySQL thread id 3, OS thread handle 0x7f953ffce700, query id 110 localhost root cleaning up

我們知道,主要根因還是thread=3引起的,但從innodb status中卻無法分析得到這個(gè)結(jié)果。

從上面來看,線程4和線程7都在等待往test.emp中的主鍵上加X鎖,page num=3,但是線程7等待的時(shí)間為45s,而線程4等待的時(shí)間為41s,是較線程7之后申請(qǐng)的鎖,所以可以判斷是線程7阻塞了線程4。至于線程7為什么出現(xiàn)等待,這里分析不到根因。

3.3  使用mysqladmin debug查看

# mysqladmin -S /tmp/mysql3306.sock debug

然后在error日志中,會(huì)看到:

Thread database.table_name   Locked/Waiting  Lock_type
 
 
3  test.t3      Locked - read   Low priority read lock
7  test.emp     Locked - write  High priority write lock

這種方法中,能找到線程ID=3和7是阻塞者,但還是不太準(zhǔn)確,判斷不出來線程7也是被線程ID=3阻塞的。

3.4  使用innodb_lock_monitor來獲取阻塞鎖線程

MySQL [test]> CREATE TABLE innodb_lock_monitor (a INT) ENGINE=INNODB; ## 隨便在一個(gè)數(shù)據(jù)庫中創(chuàng)建這個(gè)表,就會(huì)打開lock monitor
Query OK, 0 rows affected, 1 warning (0.07 sec)
 
MySQL [test]> show warnings\G
*************************** 1. row ***************************
 Level: Warning
 Code: 131
Message: Using the table name innodb_lock_monitor to enable diagnostic output is deprecated and may be removed in future releases. Use INFORMATION_SCHEMA or PERFORMANCE_SCHEMA tables or SET GLOBAL innodb_status_output=ON.
1 row in set (0.00 sec)

說明:這個(gè)在5.6中有一個(gè)warning,但不影響使用。

然后再使用show engine innodb status查看:

------------
TRANSACTIONS
------------
Trx id counter 4667
Purge done for trx's n:o  4659 undo n:o  0 state: running but idle
History list length 138
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 0, not started
MySQL thread id 9, OS thread handle 0x7f813c5f7700, query id 152 localhost root init
show engine innodb status
---TRANSACTION 4663, ACTIVE 78 sec starting index read
mysql tables in use 1, locked 1
LOCK WAIT 2 lock struct(s), heap size 360, 1 row lock(s)
MySQL thread id 4, OS thread handle 0x7f813c628700, query id 149 localhost root updating
delete from emp where empno=7788
------- TRX HAS BEEN WAITING 78 SEC FOR THIS LOCK TO BE GRANTED:  ## 等待了78s
RECORD LOCKS space id 16 page no 3 n bits 88 index `PRIMARY` of table `test`.`emp` trx id 4663 lock_mode X locks rec but not gap waiting
Record lock, heap no 9 PHYSICAL RECORD: n_fields 10; compact format; info bits 0 ## 線程4在等待往test.emp中的主鍵上加X鎖,page num=3
 0: len 4; hex 80001e6c; asc  l;;
 1: len 6; hex 000000001018; asc    ;;
 2: len 7; hex 91000001420084; asc   B ;;
 3: len 5; hex 53434f5454; asc SCOTT;;
 4: len 7; hex 414e414c595354; asc ANALYST;;
 5: len 4; hex 80001d8e; asc   ;;
 6: len 4; hex 208794f0; asc   ;;
 7: len 4; hex 80000bb8; asc   ;;
 8: SQL NULL;
 9: len 4; hex 80000014; asc   ;;
 
------------------
TABLE LOCK table `test`.`emp` trx id 4663 lock mode IX  ## 在給主鍵行上加X鎖之前,先要在表上加意向鎖IX
RECORD LOCKS space id 16 page no 3 n bits 88 index `PRIMARY` of table `test`.`emp` trx id 4663 lock_mode X locks rec but not gap waiting
Record lock, heap no 9 PHYSICAL RECORD: n_fields 10; compact format; info bits 0
 0: len 4; hex 80001e6c; asc  l;;
 1: len 6; hex 000000001018; asc    ;;
 2: len 7; hex 91000001420084; asc   B ;;
 3: len 5; hex 53434f5454; asc SCOTT;;
 4: len 7; hex 414e414c595354; asc ANALYST;;
 5: len 4; hex 80001d8e; asc   ;;
 6: len 4; hex 208794f0; asc   ;;
 7: len 4; hex 80000bb8; asc   ;;
 8: SQL NULL;
 9: len 4; hex 80000014; asc   ;;
 
---TRANSACTION 4662, ACTIVE 81 sec starting index read
mysql tables in use 1, locked 1
LOCK WAIT 2 lock struct(s), heap size 360, 1 row lock(s)
MySQL thread id 7, OS thread handle 0x7f813c5c6700, query id 148 localhost root updating
update emp set sal=3500 where empno=7788
------- TRX HAS BEEN WAITING 81 SEC FOR THIS LOCK TO BE GRANTED: ## 等待了81s
RECORD LOCKS space id 16 page no 3 n bits 88 index `PRIMARY` of table `test`.`emp` trx id 4662 lock_mode X locks rec but not gap waiting
Record lock, heap no 9 PHYSICAL RECORD: n_fields 10; compact format; info bits 0 ## 線程7在等待往test.emp中的主鍵上加X鎖,page num=3
 0: len 4; hex 80001e6c; asc  l;;
 1: len 6; hex 000000001018; asc    ;;
 2: len 7; hex 91000001420084; asc   B ;;
 3: len 5; hex 53434f5454; asc SCOTT;;
 4: len 7; hex 414e414c595354; asc ANALYST;;
 5: len 4; hex 80001d8e; asc   ;;
 6: len 4; hex 208794f0; asc   ;;
 7: len 4; hex 80000bb8; asc   ;;
 8: SQL NULL;
 9: len 4; hex 80000014; asc   ;;
 
------------------
TABLE LOCK table `test`.`emp` trx id 4662 lock mode IX  ## 在給主鍵行上加X鎖之前,先要在表上加意向鎖IX
RECORD LOCKS space id 16 page no 3 n bits 88 index `PRIMARY` of table `test`.`emp` trx id 4662 lock_mode X locks rec but not gap waiting
Record lock, heap no 9 PHYSICAL RECORD: n_fields 10; compact format; info bits 0
 0: len 4; hex 80001e6c; asc  l;;
 1: len 6; hex 000000001018; asc    ;;
 2: len 7; hex 91000001420084; asc   B ;;
 3: len 5; hex 53434f5454; asc SCOTT;;
 4: len 7; hex 414e414c595354; asc ANALYST;;
 5: len 4; hex 80001d8e; asc   ;;
 6: len 4; hex 208794f0; asc   ;;
 7: len 4; hex 80000bb8; asc   ;;
 8: SQL NULL;
 9: len 4; hex 80000014; asc   ;;
 
---TRANSACTION 4615, ACTIVE 1579 sec, thread declared inside InnoDB 1222
mysql tables in use 2, locked 0
2 lock struct(s), heap size 360, 1 row lock(s)
MySQL thread id 3, OS thread handle 0x7f813c659700, query id 147 localhost root Sending data
select count(*) from t3 a,t3 b  ## 這是線程3當(dāng)前正在執(zhí)行的SQL
Trx read view will not see trx with id >= 4662, sees  4659
TABLE LOCK table `test`.`emp` trx id 4615 lock mode IX ## 線程3中正在擁有表上的意向IX鎖,并且有test.emp表上主鍵的行級(jí)X鎖,page num=3
RECORD LOCKS space id 16 page no 3 n bits 88 index `PRIMARY` of table `test`.`emp` trx id 4615 lock_mode X locks rec but not gap
Record lock, heap no 9 PHYSICAL RECORD: n_fields 10; compact format; info bits 0
 0: len 4; hex 80001e6c; asc  l;;
 1: len 6; hex 000000001018; asc    ;;
 2: len 7; hex 91000001420084; asc   B ;;
 3: len 5; hex 53434f5454; asc SCOTT;;
 4: len 7; hex 414e414c595354; asc ANALYST;;
 5: len 4; hex 80001d8e; asc   ;;
 6: len 4; hex 208794f0; asc   ;;
 7: len 4; hex 80000bb8; asc   ;;
 8: SQL NULL;
 9: len 4; hex 80000014; asc   ;;

為什么線程3當(dāng)前執(zhí)行的是一個(gè)select t3表操作,但卻鎖住了test.emp表上page num=3?

有可能是線程3之前對(duì)test.emp表的操作事務(wù)沒有及時(shí)提交導(dǎo)致。

所以得出:線程3阻塞了線程7,而線程7又阻塞了線程4,所以根因就是線程3,讓線程3盡快提交或是kill掉即可。

4. 結(jié)論

在分析innodb中鎖阻塞時(shí),幾種方法的對(duì)比情況:

(1)使用show processlist查看不靠譜;

(2)直接使用show engine innodb status查看,無法判斷到問題的根因;

(3)使用mysqladmin debug查看,能看到所有產(chǎn)生鎖的線程,但無法判斷哪個(gè)才是根因;

(4)開啟innodb_lock_monitor后,再使用show engine innodb status查看,能夠找到鎖阻塞的根因。

原文鏈接:https://blog.csdn.net/hw_libo/article/details/39080809

到此這篇關(guān)于MySQL鎖阻塞深入分析的文章就介紹到這了,更多相關(guān)MySQL鎖阻塞內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • pgsql查詢優(yōu)化之模糊查詢實(shí)例詳解
  • C#使用EF連接PGSql數(shù)據(jù)庫的完整步驟
  • 簡(jiǎn)單的pgsql pdo php操作類實(shí)現(xiàn)代碼
  • PostgreSQL教程(二十):PL/pgSQL過程語言
  • mysql查看死鎖與去除死鎖示例詳解
  • Mysql查看死鎖與解除死鎖的深入講解
  • mysql插入前判斷數(shù)據(jù)是否存在的操作
  • PgSQl臨時(shí)表創(chuàng)建及應(yīng)用實(shí)例解析

標(biāo)簽:黔東 鹽城 沈陽 拉薩 珠海 沈陽 徐州 移動(dòng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL鎖阻塞的深入分析》,本文關(guān)鍵詞  MySQL,鎖,阻塞,的,深入分析,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL鎖阻塞的深入分析》相關(guān)的同類信息!
  • 本頁收集關(guān)于MySQL鎖阻塞的深入分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲国产毛片aaaaa无费看| 日韩你懂的在线播放| 免费美女久久99| 国产**成人网毛片九色| 欧美区一区二区三区| 欧美综合亚洲图片综合区| 欧美国产禁国产网站cc| 国产乱码精品一区二区三| 91精品91久久久中77777| 91亚洲永久精品| 亚洲欧洲精品一区二区精品久久久| 不卡的av在线| 午夜久久久影院| 日韩欧美一级二级| 91蝌蚪porny九色| 国产精品天美传媒沈樵| 日本一区二区在线不卡| 欧美日韩一区在线观看| 精品国产乱码91久久久久久网站| 免费成人深夜小野草| 国产三级一区二区三区| 欧美美女网站色| 三级影片在线观看欧美日韩一区二区| 亚洲欧洲综合另类在线| 欧美成人午夜电影| 欧美成人精品二区三区99精品| 欧美日韩国产一区| 欧美日韩一区二区在线观看| 欧美三区免费完整视频在线观看| 欧美网站一区二区| 国产精品毛片大码女人| 久久中文字幕电影| 日韩欧美成人一区二区| youjizz国产精品| www.久久精品| 欧美成人猛片aaaaaaa| 在线免费一区三区| 国产成人av电影免费在线观看| 国产精品拍天天在线| 久久国产乱子精品免费女| 精品视频在线免费| 一区二区三区久久| 欧美精品一区在线观看| 972aa.com艺术欧美| 日韩av午夜在线观看| 国产精品乱码一区二区三区软件 | 欧洲精品视频在线观看| 日本视频一区二区| 在线观看区一区二| 加勒比av一区二区| 色网综合在线观看| 亚洲欧美日韩人成在线播放| 午夜视频在线观看一区二区| 精品久久久久久久久久久久包黑料| wwww国产精品欧美| 精品视频1区2区| 亚洲国产一二三| 激情久久五月天| 久久久久久久久久电影| 91猫先生在线| 国产精品18久久久久久久久久久久| 亚洲欧美日韩综合aⅴ视频| 99视频超级精品| 99久久久无码国产精品| 奇米精品一区二区三区在线观看| |精品福利一区二区三区| 精品一区二区三区在线视频| 国产iv一区二区三区| 青青草国产精品亚洲专区无| 亚洲一区二区三区中文字幕 | 欧美日韩不卡一区二区| 精品88久久久久88久久久| 在线观看视频91| 91丨porny丨首页| 欧美三级中文字幕在线观看| 欧美午夜精品免费| 777精品伊人久久久久大香线蕉| 亚洲综合视频在线| 日韩一区二区视频在线观看| 日韩激情中文字幕| 中文字幕一区av| 一区二区三区日韩精品| 国内精品国产三级国产a久久 | 欧美男生操女生| 国产精品久线在线观看| 国产精品视频麻豆| 国产精品进线69影院| 麻豆国产精品777777在线| 麻豆极品一区二区三区| 91精品国产免费久久综合| 亚洲美女区一区| 国产精品国产馆在线真实露脸| 亚洲婷婷综合色高清在线| 亚洲柠檬福利资源导航| 激情深爱一区二区| 欧美日韩国产一区二区三区地区| 欧美一区欧美二区| 国产精品美女久久久久久 | 欧美精品 日韩| 91精品国产一区二区三区香蕉| 久久中文字幕电影| 日韩成人一级大片| 一本色道久久加勒比精品| 精品美女在线播放| 亚洲18女电影在线观看| 波多野结衣欧美| 亚洲视频免费在线观看| 色一区在线观看| 亚洲色图欧洲色图婷婷| 欧美福利一区二区| 亚洲人吸女人奶水| 国产成都精品91一区二区三| 亚洲成人7777| 国产盗摄女厕一区二区三区 | 国产aⅴ精品一区二区三区色成熟| 99国产欧美另类久久久精品| 精品一区二区综合| 99久久免费精品| 欧美日韩精品电影| 精东粉嫩av免费一区二区三区| 99国产精品国产精品毛片| 亚洲欧美一区二区三区极速播放| 日韩福利电影在线| av一区二区三区四区| 久久精品无码一区二区三区| 日本高清视频一区二区| 一级特黄大欧美久久久| 在线看国产一区二区| 蜜桃av一区二区| 国产精品麻豆视频| 亚洲人精品一区| 欧洲精品中文字幕| 奇米色777欧美一区二区| 91精品国产一区二区三区蜜臀| 久久不见久久见免费视频7| 亚洲欧美日韩一区| 国产亚洲一二三区| 亚洲第一综合色| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美精品在线一区二区三区| 99亚偷拍自图区亚洲| 日日摸夜夜添夜夜添精品视频 | 欧美在线观看一区| 五月婷婷久久丁香| 欧美bbbbb| 亚洲欧美二区三区| 欧美日韩一区二区在线观看| 91精品久久久久久久91蜜桃| 日日夜夜免费精品| 亚洲成av人片一区二区梦乃| 日韩电影在线免费看| 91原创在线视频| 日日噜噜夜夜狠狠视频欧美人| 成人黄色软件下载| 香蕉影视欧美成人| 91福利视频在线| 色欧美片视频在线观看在线视频| 久久国产生活片100| 欧美日韩在线免费视频| 国产成人丝袜美腿| 2023国产精品自拍| 日韩欧美中文一区二区| 欧美精品电影在线播放| 一本大道久久a久久综合| 精品一区二区三区欧美| 粉嫩久久99精品久久久久久夜| 9i在线看片成人免费| 日本国产一区二区| 久久久久久一级片| 一区二区三区精品在线| 亚洲一区免费在线观看| 水野朝阳av一区二区三区| 国产综合色在线视频区| 岛国精品一区二区| 欧美日韩在线观看一区二区| 欧美喷潮久久久xxxxx| 日韩精品一区二区三区中文精品| 久久久久久一二三区| 中文字幕一区二区三区在线播放| 最新热久久免费视频| 日韩国产成人精品| 不卡av电影在线播放| 欧美日韩高清影院| 成人免费高清视频在线观看| 欧美猛男男办公室激情| 色综合网站在线| 欧美一级二级三级乱码| 欧美大度的电影原声| av亚洲精华国产精华精华| 国产91综合一区在线观看| 久久99深爱久久99精品| 中文文精品字幕一区二区| 91看片淫黄大片一级| 五月天亚洲婷婷| 久久国产精品99久久久久久老狼 | 午夜精品久久久久久久久| 日韩视频123| 久久久久久久久久看片| 色系网站成人免费| 亚洲欧美日韩小说|