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

推荐订阅源

OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
云风的 BLOG
云风的 BLOG
小众软件
小众软件
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 司徒正美
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
美团技术团队
宝玉的分享
宝玉的分享
量子位
V
Visual Studio Blog
罗磊的独立博客
Vercel News
Vercel News
B
Blog
J
Java Code Geeks
S
SegmentFault 最新的问题
Recent Announcements
Recent Announcements
有赞技术团队
有赞技术团队
P
Proofpoint News Feed
GbyAI
GbyAI
G
Google Developers Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC

博客园 - 自由港

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