千家信息网

MySQL Innodb怎么让MDL LOCK和ROW LOCK记录到errlog

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容主要讲解"MySQL Innodb怎么让MDL LOCK和ROW LOCK记录到errlog",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"MySQ
千家信息网最后更新 2026年10月31日MySQL Innodb怎么让MDL LOCK和ROW LOCK记录到errlog

本篇内容主要讲解"MySQL Innodb怎么让MDL LOCK和ROW LOCK记录到errlog",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"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 insertingmysql 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 updateinsert 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 IXRECORD 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 startingshow engine innodb statusTABLE LOCK table `test`.`kkkpk` trx id 1294 lock mode IXRECORD 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"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

日志 信息 参数 测试 内容 学习 登陆 实用 更深 也就是 兴趣 印象 唯一性 实用性 实际 操作简单 方法 更多 朋友 概要 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳九邦互联网科技有限公司 互联网科技社 北京互联网科技有限公司 互联网医疗科技 广州互联网络科技有限公司 新浪科技互联网 互联网养老 桔豆科技 科技伦理 互联网公司 富国互联网科技创新基金 安控科技rtu产品工业互联网 佛山市翊博互联网络科技有限公司 洛阳共同富裕互联网科技有限公司 无锡工业互联网科技有限公司 科技互联网海报 广东工业互联网大赛深圳学泰科技 上海互联网科技公司ppt 互联网风格科技公司名称 版纳互联网科技选哪家 平安好医生打造互联网科技医疗 黑龙江互联网科技公司 互联网科技工作委员会 湖南永感互联网科技有限公司 港股互联网科技股 青岛互联网科技公司 互联网科技公司电话 互联网实体化科技化 互联网为啥属于高科技 智腾互联网科技有限公司 群盈汇互联网科技有限公司 富国互联网金融科技混合基金
0