当前位置:网站首页>mysql死锁
mysql死锁
2022-07-30 20:49:00 【胡萝卜的兔】
1. 查看正在进行中的事务
SELECT * FROM information_schema.INNODB_TRX;
mysql> SELECT * FROM information_schema.INNODB_TRX \G;
*************************** 1. row ***************************
trx_id: 331123705
trx_state: RUNNING
trx_started: 2022-07-19 13:47:12
trx_requested_lock_id: NULL
trx_wait_started: NULL
trx_weight: 0
trx_mysql_thread_id: 11355
trx_query: NULL
trx_operation_state: NULL
trx_tables_in_use: 0
trx_tables_locked: 0
trx_lock_structs: 0
trx_lock_memory_bytes: 360
trx_rows_locked: 0
trx_rows_modified: 0
trx_concurrency_tickets: 0
trx_isolation_level: REPEATABLE READ
trx_unique_checks: 1
trx_foreign_key_checks: 1
trx_last_foreign_key_error: NULL
trx_adaptive_hash_latched: 0
trx_adaptive_hash_timeout: 10000
trx_is_read_only: 0
trx_autocommit_non_locking: 0
*************************** 2. row ***************************
trx_id: 331123681
trx_state: RUNNING
trx_started: 2022-07-19 13:47:09
trx_requested_lock_id: NULL
trx_wait_started: NULL
trx_weight: 397
trx_mysql_thread_id: 11409
trx_query: update sys_role_user ru
inner join sys_role r on ru.client_role_id = r.client_role_id
inner join sys_user_center uc on ru.client_user_id = uc.id
set ru.role_id = r.id, ru.open_id = uc.open_id
where (ru.role_id is null or ru.open_id is null) and ru.update_time >= '2022-07-19 13:47:09'
and ru.client_id = 'webApp' and ru.`enable` = '1000102'
trx_operation_state: fetching rows
trx_tables_in_use: 3
trx_tables_locked: 3
trx_lock_structs: 397
trx_lock_memory_bytes: 63016
trx_rows_locked: 109781
trx_rows_modified: 0
trx_concurrency_tickets: 0
trx_isolation_level: REPEATABLE READ
trx_unique_checks: 1
trx_foreign_key_checks: 1
trx_last_foreign_key_error: NULL
trx_adaptive_hash_latched: 0
trx_adaptive_hash_timeout: 9974
trx_is_read_only: 0
trx_autocommit_non_locking: 0
2 rows in set (0.00 sec)
如果发现 trx_state
为 LOCK_WAIT
则发生死锁 ,可以用trx_mysql_thread_id
mysql线程来,通过kill 线程
杀死线程
2 . 查看正在锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
3. 查看等待锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
4. 查询是否锁表
SHOW OPEN TABLES where In_use > 0;
5. 解决死锁
解除死锁
如果需要解除死锁,有一种最简单粗暴的方式,那就是找到进程id之后,直接干掉。
查看当前正在进行中的进程
show processlist
// 也可以使用
SELECT * FROM information_schema.INNODB_TRX;
这两个命令找出来的进程id 是同一个。
杀掉进程对应的进程
kill id
验证(kill后再看是否还有锁)
SHOW OPEN TABLES where In_use > 0;
边栏推荐
猜你喜欢
随机推荐
KingbaseESV8R6 snapshot too old的配置和测试
软考 --- 数据库(6)数据仓库、分布式数据库
弹性盒子模型
@WebServlet注解(Servlet注解)
Recommendation System - Sorting Layer - Model (1): Embedding + MLP (Multilayer Perceptron) Model [Deep Crossing Model: Classic Embedding + MLP Model Structure]
[c语言]二维数组动态分配内存
[The Beauty of Software Engineering - Column Notes] 31 | Is software testing responsible for product quality?
MySQL——几种常见的嵌套查询
Network layer protocol------IP protocol
化二次型为标准型
MySQL 多表关联一对多查询实现取最新一条数据
2021年PHP-Laravel面试题问卷题 答案记录
深度学习模型训练前的必做工作:总览模型信息
线性结构:顺序表和链表
ceph的部署练习
[Nuxt 3] (十四) Nuxt 生命周期
【回归预测-CNN预测】基于卷积神经网络CNN实现数据回归预测附matlab代码
第04章 逻辑架构【1.MySQL架构篇】【MySQL高级】
vlan简单实验
MySQL的on duplicate key update 的使用