久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL Innodb怎么讓MDL LOCK和ROW LOCK記錄到errlog

143次閱讀
沒有評論

共計 5148 個字符,預計需要花費 13 分鐘才能閱讀完成。

本篇內容主要講解“MySQL Innodb 怎么讓 MDL LOCK 和 ROW LOCK 記錄到 errlog”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“MySQL Innodb 怎么讓 MDL LOCK 和 ROW LOCK 記錄到 errlog”吧!

一、新加入的參數和保留的參數

mysql  show variables like  %gaopeng% 
+--------------------------------+-------+| Variable_name | Value |
+--------------------------------+-------+
| gaopeng_mdl_detail | OFF || innodb_gaopeng_row_lock_detail | ON |
+--------------------------------+-------+

gaopeng_mdl_detail: 默認 OFF,可以設置 ON 用于打印 MDL LOCK 獲取、等待、升級、降級、釋放日志到 errlog(GOBAL),并且可以在 show engine 中獲取

innodb_gaopeng_row_lock_detail: 默認 OFF,可以設置為 ON,用于打印 innodb ROW LOCK 獲取日志、等待日志、隱含鎖轉換日志等到 errlog,并且可以在 show engine 中獲取詳細鎖鏈表信息 (注意
沒有行的詳細信息需要開啟 innodb_show_verbose_locks) 到 errlog(GLOBAL)。但是沒有做表級印象鎖輸出。

保留原有參數
innodb_show_verbose_locks: 默認為 0,設置為 1,可以在 show engine 中獲取鎖定的行詳細信息。

二、測試概要

MySQL MDL LOCK
也就是如果要 MDL LOCK 測試設置如下:
set global gaopeng_mdl_detail=1;
重新登陸后每次獲取 MDL LOCK 信息會得到日志,下面是一個 select 語句獲取 MDL LOCK 和釋放的日志:

2018-09-01T20:32:07.090351+08:00 11 [Note] [Call Acquire_lock] THIS MDL LOCK acquire [OK]:
2018-09-01T20:32:07.090503+08:00 11 [Note] (MDL PRINT) |Thread id is 11|Current_state: Opening tables| 
2018-09-01T20:32:07.090542+08:00 11 [Note] (- MDL PRINT) DB_name is:test 2018-09-01T20:32:07.090571+08:00 11 [Note] (-- MDL PRINT) OBJ_name is:kkkpk 
2018-09-01T20:32:07.090595+08:00 11 [Note] (--- MDL PRINT) Namespace is:TABLE 
2018-09-01T20:32:07.090608+08:00 11 [Note] (---- MDL PRINT) Fast path is:(Y)
2018-09-01T20:32:07.090621+08:00 11 [Note] (----- MDL PRINT) Mdl type is:MDL_SHARED_READ(SR) 
2018-09-01T20:32:07.090635+08:00 11 [Note] (------- MDL PRINT) Mdl status is:EMPTY 
2018-09-01T20:32:07.091077+08:00 11 [Note] [Call release_lock] this MDL LOCK will [RELEASE]:
2018-09-01T20:32:07.091168+08:00 11 [Note] (MDL PRINT) |Thread id is 11|Current_state: closing tables| 
2018-09-01T20:32:07.091197+08:00 11 [Note] (- MDL PRINT) DB_name is:test 2018-09-01T20:32:07.091210+08:00 11 [Note] (-- MDL PRINT) OBJ_name is:kkkpk 
2018-09-01T20:32:07.091241+08:00 11 [Note] (--- MDL PRINT) Namespace is:TABLE 
2018-09-01T20:32:07.091254+08:00 11 [Note] (---- MDL PRINT) Fast path is:(Y)
2018-09-01T20:32:07.091267+08:00 11 [Note] (----- MDL PRINT) Mdl type is:MDL_SHARED_READ(SR) 
2018-09-01T20:32:07.091280+08:00 11 [Note] (------- MDL PRINT) Mdl status is:EMPTY

Innodb ROW LOCK

如果需要 INNODB ROW LOCK 加鎖測試可以設置如下:
set global innodb_gaopeng_row_lock_detail=1;
set innodb_show_verbose_locks=1;

重新登陸,下面是一個 insert 唯一性檢查鎖定的日志:

2018-09-01T20:26:08.809304+08:00 10 [Note] InnoDB: This TRX help other TRX convert impl lock to expl lock!!!insert often use impl lock!!!!
2018-09-01T20:26:08.809422+08:00 10 [Note] InnoDB: Other TRX:
2018-09-01T20:26:08.809477+08:00 10 [Note] InnoDB: TRX ID:(1294) table:test/kkkpk index:PRIMARY space_id: 28 page_id:3 heap_no:2 row lock mode:LOCK_X|LOCK_NOT_GAP|
PHYSICAL RECORD: n_fields 3; compact format; info bits 0
 0: len 4; hex 80000001; asc ;;
 1: len 6; hex 00000000050e; asc ;;
 2: len 7; hex ae0000001e0110; asc ;;
2018-09-01T20:26:08.809824+08:00 10 [Note] InnoDB: This TRX:
2018-09-01T20:26:08.809851+08:00 10 [Note] InnoDB: TRX ID:(1295) table:test/kkkpk index:PRIMARY space_id: 28 page_id:3 heap_no:2 row lock mode:LOCK_S|LOCK_NOT_GAP|
PHYSICAL RECORD: n_fields 3; compact format; info bits 0
 0: len 4; hex 80000001; asc ;;
 1: len 6; hex 00000000050e; asc ;;
 2: len 7; hex ae0000001e0110; asc ;;
2018-09-01T20:26:08.810401+08:00 10 [Note] InnoDB: Trx(1295) is blocked!!!!!

show engine 也會得到如下記錄:

---TRANSACTION 1295, ACTIVE 101 sec inserting
mysql tables in use 1, locked 1LOCK WAIT 2 lock struct(s), heap size 1136, 1 row lock(s)
MySQL thread id 10, OS thread handle 139670301562624, query id 55 localhost root update
insert into kkkpk values(1)
------- TRX HAS BEEN WAITING 101 SEC FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 28 page no 3 n bits 72 index PRIMARY of table `test`.`kkkpk` trx id 1295 lock mode S(LOCK_S) locks rec but not gap(LOCK_REC_NOT_GAP) waiting(LOCK_WAIT)
Record lock, heap no 2 PHYSICAL RECORD: n_fields 3; compact format; info bits 0
 0: len 4; hex 80000001; asc ;; 1: len 6; hex 00000000050e; asc ;; 2: len 7; hex ae0000001e0110; asc ;;
------------------
TABLE LOCK table `test`.`kkkpk` trx id 1295 lock mode IX
RECORD LOCKS space id 28 page no 3 n bits 72 index PRIMARY of table `test`.`kkkpk` trx id 1295 lock mode S(LOCK_S) locks rec but not gap(LOCK_REC_NOT_GAP) waiting(LOCK_WAIT)
Record lock, heap no 2 PHYSICAL RECORD: n_fields 3; compact format; info bits 0
 0: len 4; hex 80000001; asc ;; 1: len 6; hex 00000000050e; asc ;; 2: len 7; hex ae0000001e0110; asc ;;
---TRANSACTION 1294, ACTIVE 132 sec2 lock struct(s), heap size 1136, 1 row lock(s), undo log entries 1MySQL thread id 9, OS thread handle 139670301828864, query id 56 localhost root starting
show engine innodb status
TABLE LOCK table `test`.`kkkpk` trx id 1294 lock mode IX
RECORD LOCKS space id 28 page no 3 n bits 72 index PRIMARY of table `test`.`kkkpk` trx id 1294 lock_mode X(LOCK_X) locks rec but not gap(LOCK_REC_NOT_GAP)
Record lock, heap no 2 PHYSICAL RECORD: n_fields 3; compact format; info bits 0
 0: len 4; hex 80000001; asc ;; 1: len 6; hex 00000000050e; asc ;; 2: len 7; hex ae0000001e0110; asc ;;

到此,相信大家對“MySQL Innodb 怎么讓 MDL LOCK 和 ROW LOCK 記錄到 errlog”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-24發表,共計5148字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 锦屏县| 南木林县| 宁远县| 沁水县| 渭源县| 嘉鱼县| 延庆县| 佛学| 赤城县| 淳化县| 永兴县| 孝义市| 马龙县| 偃师市| 乐东| 西吉县| 洞口县| 阜新| 南城县| 怀安县| 株洲市| 剑川县| 调兵山市| 简阳市| 贺兰县| 巴林左旗| 株洲市| 随州市| 鹤壁市| 长寿区| 县级市| 成安县| 普安县| 来宾市| 洞口县| 靖安县| 吴堡县| 红河县| 绥阳县| 肇州县| 黔西|