您现在的位置是:亿华云 > IT科技
MySQL8.0锁情况排查,你学会了吗?
亿华云2025-10-09 10:54:31【IT科技】4人已围观
简介在数据库中,除传统的计算资源(CPU、RAM、IO)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的
在数据库中,情况除传统的排查计算资源(CPU、RAM、情况IO)的排查争用以外,数据也是情况一种供许多用户共享的资源。如何保证数据并发访问的排查一致性、有效性是情况所有数据库必须解决的高防服务器一个问题,锁冲突也是排查影响数据库并发访问性能的一个重要因素。从这个角度来说,情况锁对教据库而言显得尤其重要,排查也更加复杂。情况
本文将通过实验介绍MySQL8.0版锁该如何排查,排查以及找到阻塞的情况sql语句,实验的排查MySQL版本为8.0.26,企商汇隔离级别为RR。情况
1.MySQL8.0版本锁情况排查核心表 information_schema.innodb_trx ##正在运行的事务信息。
sys.innodb_lock_waits ##处于锁等待的关联事务信息。
performance_schema.threads ##SQL线程及线程号、进程号、OS线程号等信息2.行锁监控语句及排查步骤# 确认有没有锁等待:
show status like innodb_row_lock%;
select * from information_schema.innodb_trx;
# 查询锁等待详细信息
select * from sys.innodb_lock_waits; ----> blocking_pid(锁源的连接线程)
# 通过连接线程ID找SQL线程语句
select * from performance_schema.threads;
# 通过SQL线程找到SQL语句
select * from performance_schema.events_statements_history;3.测试验证mysql> use world;
mysql> show tables;
+-----------------+
| Tables_in_world |
+-----------------+
| city |
| country |
| countrylanguage |
+-----------------+
3 rows in set (0.00 sec)3.1 分别开启两个窗口(session1,session2)s1:
# 加排他锁
mysql> begin;
mysql> select * from world.city where id=1 for update;
s2:
# 加排他锁
mysql> begin;
mysql> update city set name=girl where id=1;
执行完处于夯住状态,默认50秒会超时回滚。
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
mysql> set innodb_lock_wait_timeout=5000; ##锁等待超时参数,这里设置为5000便于测试.
mysql> update city set name=girl where id=1;3.2 再开一个窗口s3,查看锁状态mysql> use information_schema;
mysql> select trx_id,trx_state,trx_started,trx_tables_locked,trx_rows_locked from innodb_trx\G
云服务器很赞哦!(169)
下一篇: 4.选择顶级的域名注册服务商
相关文章
- 在此期间,他们每天仍在这里卖大米,在理财方面个人感情有待提高。因为现在是收米的最佳时机。
- Github标星58.4K,面试之前看这个项目就对了
- 你应该尝试的12个杀手级Rust库
- 「React进阶」我在函数组件中可以随便写-通俗异步组件原理
- 其次,一般域名注册有一个获取密码的按钮,域名注册商点击后会向您发送密码。在得到域名注册商发送的密码后,将其传输到域名服务提供商网站,然后输入密码,此时域名呈现申请状态。提交申请后,原注册人通常会向您发送一封电子邮件,询问您是否同意转让。此时,您只需点击同意转移按钮,域名注册商就可以成功转移。
- Jest 写前端单元测试入门
- 盘点Python基础实战
- 从线上偶发的宕机事件看Netty流量控制
- 4.选择顶级的域名注册服务商
- 全面介绍Prometheus的官方导出器Blackbox