mysql写入时判断锁_MySQL 锁检查
一 在分析innodb中锁阻塞时,几种方法的对比情况:
1.使用show processlist查看不靠谱
2.直接使用show engine innodb status查看,无法判断到问题的根因
3.使用mysqladmin debug查看,能看到所有产生锁的线程,但无法判断哪个才是根因
# mysqladmin -uroot -p debug
4.开启innodb_lock_monitor后,再使用show engine innodb status查看,能够找到锁阻塞的根因
# 随便在一个数据库中创建这个表,就会打开lock monitor。创建表后innodb会每过15秒输出一次innodb状态信息到error log,通过删除表停止该monitor功能
MySQL> create table innodb_monitor(a int) engine=innodb;
二 查看事务和锁的相关视图
select * from INFORMATION_SCHEMA.innodb_trx;
select * from INFORMATION_SCHEMA.innodb_locks;
select * from INFORMATION_SCHEMA.innodb_lock_waits;
三 案例
创建测试表并填充数据
root@localhost:mysql.sock 02:30:59 [school]>CREATE TABLE t_gap( a INT, b INT, PRIMARY KEY (a), KEY(b));
root@localhost:mysql.sock 02:31:19 [school]>insert into t_gap values(1,1), (3,1), (5,3), (7,6),(10,8);
root@localhost:mysql.sock 22:45:13 [school]>select * from t_gap;
+----+------+
| a | b |
+----+------+
| 1 | 1 |
| 3 | 1 |
| 5 | 3 |
| 7 | 6 |
| 10 | 8 |
+----+------+
5 rows in set (0.00 sec)
session1:
T1:begin;SELECT * FROM t_gap WHERE b =3 FOR UPDATE;
session2:
T2:begin;SELECT * FROM t_gap WHERE a=5 LOCK IN SHARE MODE;(等待)
注意:
在辅助索引上加的锁,最终会回溯到主键上再加一把锁.如上T1,在索引列b上加了锁,会回溯到主键a=5上再加一把锁
root@localhost:mysql.sock 03:08:12 [school]>show engine innodb status \G;
------------
TRANSACTIONS
------------
Trx id counter 44387
Purge done for trx's n:o < 44376 undo n:o < 0 state: running but idle
History list length 2206
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 0, not started
MySQL thread id 31, OS thread handle 0x7f80f5cc6700, query id 260 localhost root init
show engine innodb status
---TRANSACTION 44386, ACTIVE 3 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 32, OS thread handle 0x7f80f5cf7700, query id 259 localhost root statistics
SELECT * FROM t_gap WHERE A=5 LOCK IN SHARE MODE
------- TRX HAS BEEN WAITING 3 SEC FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 28 page no 3 n bits 72 index `PRIMARY` of table `school`.`t_gap` trx id 44386 lock mode S locks rec but not gap waiting
Record lock, heap no 4 PHYSICAL RECORD: n_fields 4; compact format; info bits 0
0: len 4; hex 80000005; asc ;;
1: len 6; hex 00000000ad4e; asc N;;
2: len 7; hex b7000002330128; asc 3 (;;
3: len 4; hex 80000003; asc ;;
------------------
---TRANSACTION 44385, ACTIVE 15 sec
4 lock struct(s), heap size 1184, 3 row lock(s)
MySQL thread id 33, OS thread handle 0x7f80f5d28700, query id 257 localhost root cleaning up
mysql写入时判断锁_MySQL 锁检查相关推荐
- mysql平均锁_MySQL锁情况分析
TIPS 本文基于MySQL 8.0.22 分析锁的三种方式 方式1: show status like '%innodb_row_lock%'; 可查看行锁相关的统计信息 方式2: SHOW ENG ...
- mysql怎么加全局锁_MySQL锁机制/管理(并发锁,行锁,表锁,预加锁,全局锁等等)
MySQL实验室 1.?MySQL 中并发和隔离控制机制 Meta-data元数据锁:在table cache缓存里实现的,为DDL(Data Definition Language)提供隔离操作.一 ...
- 用命令行连接mysql文件时出现错误_MySQL使用cmd命令窗口安装错误信息提示的解决方法...
作者:二龙_01 转载自https://blog.csdn.net/ 近期学习使用mysql数据库遇到了一些安装上的问题,自己也上网百度了各种解决方法,其中有适合自己的,也发现了一些人云亦云的解决方法 ...
- mysql mdl锁_MySQL锁系列3 MDL锁
MySQL为了保护数据字典元数据,使用了metadata lock,即MDL锁,保证在并发的情况下,结构变更的一致性. MDL锁的加锁模式和源码上的组织上和上一篇blog中MySQL表锁的实现方式一致 ...
- mysql mdl 锁_MySQL锁系列3 MDL锁
MySQL为了保护数据字典元数据,使用了metadata lock,即MDL锁,保证在并发的情况下,结构变更的一致性. MDL锁的加锁模式和源码上的组织上和上一篇blog中MySQL表锁的实现方式一致 ...
- mysql 不让读的锁_MySQL锁问题(脏读、不可重复读、幻读)
锁问题 通过锁定机制可以实现事务的隔离性要求,使得事务可以并发地工作.锁提高了并发,但是却会带来潜在地问题.不过好在因为事务隔离性地要求.锁只会带来三种问题,如果可以防止这三种情况地发生,那将不会产生 ...
- mysql查询语句判断日期_mysql语句查询时间检测
MySQL explain功能展示的各种信息的解释如下: id: MySQL Query Optimizer 选定的执行计划中查询的序列号. select_type: 所使用的查询类型,主要有以下这几 ...
- mysql安装时1045错误_MySql 安装时的1045错误
解决方案一:卸载MySQL,重新安装 1, 卸载MySQL 2, 删除目录 C:\Documents and Settings\All Users\Application Data\MySQL,还要删 ...
- mysql重装时没有权限_MySQL系列--1.安装卸载与用户权限管理
MySQL安装 1.Ubuntu18下安装MySQL sudo apt-get install mysql-server MySQL的版本为5.7.25 2.登录MySQL 采用mysql-serve ...
最新文章
- 写算子单元测试Writing Unit Tests
- 每个 JavaScript 开发者都该懂的 Unicode
- 全栈 - 20 Web 基础 网页的血肉 CSS
- AI企业下一个使命:让生物特征数据使用走向阳光透明
- python graph_python graph什么意思
- 常用DOS命令全面收藏
- 代理类和被代理类的解释及案例
- 程序员学习网站备份(小众+不定时更新ing...)建议收藏
- kotlin学习笔记——枚举、封闭类
- windows下xmllib2使用简介 64位
- (转)Arcgis for Js之鼠标经过显示对象名的实现
- python实现模糊搜索_Python 代码实现模糊查询
- java做文件显示器_JavaWeb显示器
- elasticsearch体验(一.初识elasticsearch)
- theano 编程技巧
- 怎么在Linux中telnet服务器,Linux系统下Telnet服务器配置
- 【React Router 6 快速上手一】重定向Navigate / useRoutes路由表 / 嵌套路由Outlet
- 遗传算法入门(连载之十) 神经网络入门(连载预告)
- Photoshop支持ICO图片格式
- 用PayPal在eBay上撸货加哪种卡可以长期用?
热门文章
- php无线分类函数,php 无限级分类函数
- tensorflow 转 numpy 转 tensorflow
- tensorflow教程 一元线性回归
- 3.对角线遍历(LeetCode第498题)
- linux下bash脚本常用的十个技巧:显示执行脚本花费的时间,在脚本退出时杀死后台运行的程序,在脚本退出时跳出循环,读取命令行参数来决定循环次数
- File `listings.sty' not found. usepackage
- java 摘要算法_Java实现消息摘要算法加密
- Nginx 真实的 IP
- CALayer(二)
- python入门第一课练习题_老男孩教育Python 9期第一课练习题答案