惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
F
Fortinet All Blogs
量子位
G
Google Developers Blog
J
Java Code Geeks
N
Netflix TechBlog - Medium
博客园 - 聂微东
宝玉的分享
宝玉的分享
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
月光博客
月光博客
The Cloudflare Blog
Apple Machine Learning Research
Apple Machine Learning Research
爱范儿
爱范儿
雷峰网
雷峰网
M
MIT News - Artificial intelligence
T
Tailwind CSS Blog
V
Visual Studio Blog
阮一峰的网络日志
阮一峰的网络日志
博客园 - 三生石上(FineUI控件)
Microsoft Azure Blog
Microsoft Azure Blog
aimingoo的专栏
aimingoo的专栏
Martin Fowler
Martin Fowler
有赞技术团队
有赞技术团队
T
The Blog of Author Tim Ferriss

博客园 - 自由港

postgres 支持全文索引 查看 milvus 中的数据 使用 keepalived 实现 tendis 高可用 部署tendis IDEA 运行 main 方法导致整个项目 install 自定义classloader hive 基础操作 在 服务器部署 seatunnel web服务 使用 seatunnel web 设计一个数据同步 如何 运行 seatunnel web 开发版 使用 seatunnel 实现数据同步 avro 数据入门 NIFI国际化 使用 NIFI读取EXCEL 数据到数据库 NIFI 使用HTTP 作为数据源接收数据 使用NIFI 同步数据库表 使用 NIFI监控数据库表 切换JDK NIFI实现配置分发
查询数据库锁死情况
自由港 · 2026-01-15 · via 博客园 - 自由港

1. 概述

有些情况下,我们在执行SQL的时候,有些SQL被锁死,我需要查询锁的清空,需要如何处理。

2. 创建测试表

CREATE TABLE `t_user` (
  `id` INT NOT NULL PRIMARY KEY,
  `name` VARCHAR(50),
  `balance` DECIMAL(10,2)
) ENGINE=InnoDB;

INSERT INTO t_user VALUES (1, 'Alice', 100.00), (2, 'Bob', 200.00);

3. 锁查询

行锁意思是,两个事务锁住同一行数据的情况.
模拟锁,开启两个事务锁住同一行的情况

-- 执行第一个更新
START TRANSACTION;
update t_user set name='A1' where id=1;

-- 执行第二个更新
START TRANSACTION;
update t_user set name='B1' where id=1;

这样 因为第一个没有提交,第二个就会被锁住

查询锁的情况

SELECT
  waiting_trx.trx_id AS waiting_trx_id,
  waiting_trx.trx_mysql_thread_id AS waiting_thread,
  waiting_stmt.SQL_TEXT AS waiting_sql,
  blocking_trx.trx_id AS blocking_trx_id,
  blocking_trx.trx_mysql_thread_id AS blocking_thread,
  blocking_stmt.SQL_TEXT AS blocking_sql
FROM performance_schema.data_lock_waits w
JOIN performance_schema.data_locks waiting_lock 
  ON w.REQUESTING_ENGINE_LOCK_ID = waiting_lock.ENGINE_LOCK_ID
JOIN performance_schema.data_locks blocking_lock 
  ON w.BLOCKING_ENGINE_LOCK_ID = blocking_lock.ENGINE_LOCK_ID
JOIN performance_schema.threads waiting_thread 
  ON waiting_lock.THREAD_ID = waiting_thread.THREAD_ID
JOIN performance_schema.threads blocking_thread 
  ON blocking_lock.THREAD_ID = blocking_thread.THREAD_ID
JOIN information_schema.innodb_trx waiting_trx 
  ON waiting_trx.trx_mysql_thread_id = waiting_thread.PROCESSLIST_ID
JOIN information_schema.innodb_trx blocking_trx 
  ON blocking_trx.trx_mysql_thread_id = blocking_thread.PROCESSLIST_ID
LEFT JOIN performance_schema.events_statements_current waiting_stmt 
  ON waiting_stmt.THREAD_ID = waiting_lock.THREAD_ID
LEFT JOIN performance_schema.events_statements_current blocking_stmt 
  ON blocking_stmt.THREAD_ID = blocking_lock.THREAD_ID;

通过上面SQL查询结果如下:
image