使用SHOW PROCESSLIST和SHOW ENGINE INNODB STATUS排查mysql锁等待问题
现象:
mysql 查某表一直不能结束,查别的表没有问题。已知之前刚刚alter此表想把它的一个字段长度增长,但是这个操作一直没有结束。现在应该怎么办?
方案:
使用 SHOW PROCESSLIST; 查看当前所有活动的SQL线程,找出是否有长时间运行的查询或锁定。可配合SHOW ENGINE INNODB STATUS语句查看InnoDB锁等待情况。如果发现有阻塞的进程,可以通过 KILL [thread_id]; 来终止它。
具体经过:
SHOW PROCESSLIST结果如下。可以看到ID87337为我发起的修改字段操作,此时它正处于等待元数据锁的状态。此外也有多个对此表的操作都卡在相同状态:

通义的相关解释:Waiting for table metadata lock 状态并不一定意味着死锁,但它确实表明有多个会话在等待获取表的元数据锁。这种情况通常发生在以下几种场景:
长时间运行的事务:
如果有一个长时间运行的事务持有表的元数据锁(例如正在进行 ALTER TABLE、INSERT、UPDATE 或 DELETE 操作),其他试图访问同一表的操作将被阻塞,直到该事务完成。
未提交的事务:
如果某个事务对表进行了修改但没有提交或回滚,其他会话将无法获得所需的锁,导致它们处于等待状态。
DDL操作:
DDL(数据定义语言)操作如 ALTER TABLE 会隐式地对表加锁,阻止其他会话同时进行某些类型的访问,直到 DDL 操作完成。
然后我应该是把87337kill掉了,然后重新发起了一个alter命令,但这个新的命令仍然一直卡住不能结束。于是我重新调用SHOW PROCESSLIST,看到了以下结果。可看到新的命令ID为87360,又处在等待元数据锁的状态:

为了查看InnoDB锁等待情况,我使用命令SHOW ENGINE INNODB STATUS,返回的信息如下:
SHOW executed successfully=====================================
2025-01-17 02:30:02 7fe54c0cb700 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the last 15 seconds
-----------------
BACKGROUND THREAD
-----------------
srv_master_thread loops: 2620 srv_active, 0 srv_shutdown, 10442746 srv_idle
srv_master_thread log flush and writes: 10445361
----------
SEMAPHORES
----------
OS WAIT ARRAY INFO: reservation count 2876
OS WAIT ARRAY INFO: signal count 2877
Mutex spin waits 683, rounds 3861, OS waits 113
RW-shared spins 2768, rounds 82977, OS waits 2761
RW-excl spins 4, rounds 70, OS waits 2
Spin rounds per wait: 5.65 mutex, 29.98 RW-shared, 17.50 RW-excl
------------
TRANSACTIONS
------------
Trx id counter 71256
Purge done for trx's n:o < 71216 undo n:o < 0 state: running but idle
History list length 747
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 71242, not started
MySQL thread id 87347, OS thread handle 0x7fe54c047700, query id 704919 123.158.64.155 root
---TRANSACTION 71239, not started
MySQL thread id 87342, OS thread handle 0x7fe54d49d700, query id 704918 123.158.64.155 root
---TRANSACTION 71234, not started
MySQL thread id 87346, OS thread handle 0x7fe54c14f700, query id 704916 123.158.64.155 root
---TRANSACTION 71233, not started
MySQL thread id 87344, OS thread handle 0x7fe5446ae700, query id 704915 123.158.64.155 root
---TRANSACTION 71230, not started
MySQL thread id 87348, OS thread handle 0x7fe54445c700, query id 704914 123.158.64.155 root
---TRANSACTION 71231, not started
MySQL thread id 87350, OS thread handle 0x7fe5441c8700, query id 704922 123.158.64.155 root
---TRANSACTION 71247, not started
mysql tables in use 1, locked 2
MySQL thread id 87360, OS thread handle 0x7fe544732700, query id 704927 123.158.64.155 root Waiting for table metadata lock
alter table log_styleGeneration
modify column `prompt` varchar(1200) NOT NULL COMMENT '提示词'
---TRANSACTION 71240, not started
MySQL thread id 87345, OS thread handle 0x7fe54d4df700, query id 704920 123.158.64.155 root
---TRANSACTION 71241, not started
MySQL thread id 87349, OS thread handle 0x7fe5440c0700, query id 704921 123.158.64.155 root
---TRANSACTION 71208, not started
MySQL thread id 87327, OS thread handle 0x7fe54424c700, query id 704680 123.158.64.155 root
---TRANSACTION 71238, not started
MySQL thread id 87307, OS thread handle 0x7fe54d5a5700, query id 704917 123.158.64.155 root
---TRANSACTION 71225, ACTIVE 1229 sec
MySQL thread id 87357, OS thread handle 0x7fe54c0cb700, query id 704949 123.158.64.155 root init
SHOW ENGINE INNODB STATUS
Trx read view will not see trx with id >= 71226, sees < 71179
---TRANSACTION 71179, ACTIVE 4552 sec
MySQL thread id 87293, OS thread handle 0x7fe544354700, query id 704468 123.158.64.155 root
Trx read view will not see trx with id >= 71180, sees < 71180
--------
FILE I/O
--------
I/O thread 0 state: waiting for completed aio requests (insert buffer thread)
I/O thread 1 state: waiting for completed aio requests (log thread)
I/O thread 2 state: waiting for completed aio requests (read thread)
I/O thread 3 state: waiting for completed aio requests (read thread)
I/O thread 4 state: waiting for completed aio requests (read thread)
I/O thread 5 state: waiting for completed aio requests (read thread)
I/O thread 6 state: waiting for completed aio requests (write thread)
I/O thread 7 state: waiting for completed aio requests (write thread)
I/O thread 8 state: waiting for completed aio requests (write thread)
I/O thread 9 state: waiting for completed aio requests (write thread)
Pending normal aio reads: 0 [0, 0, 0, 0] , aio writes: 0 [0, 0, 0, 0] ,ibuf aio reads: 0, log i/o's: 0, sync i/o's: 0
Pending flushes (fsync) log: 0; buffer pool: 0
1026 OS file reads, 21448 OS file writes, 14504 OS fsyncs
0.00 reads/s, 0 avg bytes/read, 0.00 writes/s, 0.00 fsyncs/s
-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf: size 1, free list len 0, seg size 2, 2 merges
merged operations:insert 2, delete mark 0, delete 0
discarded operations:insert 0, delete mark 0, delete 0
Hash table size 276671, node heap has 8 buffer(s)
0.00 hash searches/s, 0.00 non-hash searches/s
---
LOG
---
Log sequence number 633754370
Log flushed up to 633754370
Pages flushed up to 633754370
Last checkpoint at 633754370
0 pending log writes, 0 pending chkp writes
5866 log i/o's done, 0.00 log i/o's/second
----------------------
BUFFER POOL AND MEMORY
----------------------
Total memory allocated 137363456; in additional pool allocated 0
Dictionary memory allocated 216251
Buffer pool size 8191
Free buffers 6103
Database pages 2080
Old database pages 747
Modified db pages 0
Pending reads 0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 1, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 999, created 1081, written 12653
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
No buffer pool page gets since the last printout
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 2080, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]
--------------
ROW OPERATIONS
--------------
0 queries inside InnoDB, 0 queries in queue
2 read views open inside InnoDB
Main thread process no. 1, id 140622723802880, state: sleeping
Number of rows inserted 5760, updated 69, deleted 10, read 1982107
0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.00 reads/s
----------------------------
END OF INNODB MONITOR OUTPUT
============================Execution time: 26ms
使用通义帮忙分析,从SHOW PROCESSLIST和SHOW ENGINE INNODB STATUS返回的信息都可以看到,罪魁祸首是ID为87293的SQL线程,它已经活跃了一个多小时还未结束,极可能是它占有了元数据锁,导致别的操作阻塞:

于是我KILL 87293; 一切都OK了,ID87360的alter命令也顺利结束了。至于87293如何引起的就不得而知了
相关文章:
使用SHOW PROCESSLIST和SHOW ENGINE INNODB STATUS排查mysql锁等待问题
现象: mysql 查某表一直不能结束,查别的表没有问题。已知之前刚刚alter此表想把它的一个字段长度增长,但是这个操作一直没有结束。现在应该怎么办? 方案: 使用 SHOW PROCESSLIST; 查看当前所有活动的SQL线程,找出是否有长时间…...
ElasticSearch映射分词
目录 弃用Type why 映射 查询 mapping of index 创建 index with mapping 添加 field with mapping 数据迁移 1.新建 一个 index with correct mapping 2.数据迁移 reindex data into that index 分词 POST _analyze 自定义词库 ik分词器 circuit_breaking_excep…...
JVM——堆的回收:引用计数发和可达性分析法、五种对象引用
目录 引用计数法和可达性分析法 引用计数法: 可达性分析算法: 五种对象引用 软引用: 弱引用: 引用计数法和可达性分析法 引用计数法: 引用计数法会为每个对象维护一个引用计数器,当对象被引用时加1&…...
PosgreSQL比MySQL更优秀吗?
一日,一群开发者对PosgreSQL是不是比MySQL更优秀进行了激烈的辩论,双方吵的都要打起来了 正方有以下理由: PostgreSQL严格遵循SQL标准规范,相较MySQL在语法兼容性和功能完整性方面展现出更强的体系化设计,尤其在事务处…...
冒险岛079 V8 整合版源码搭建教程+IDEA启动
今天教大家来部署下一款超级怀旧游戏冒险岛,冒险岛源码是开源的,但是开源的代码会有各种,本人进行了加工整合,并且用idea进行了启动测试,经过修改后没有任何问题。 启动截图 后端控制台 前端游戏界面 声明 冒险岛源码…...
基于Python的Flask微博话题舆情分析可视化系统
2024数据 ✅️标价源码 远程部署加 20 ✅️爬虫可用 有六月数据 ✅️修复bug不会突然打不开网页 系统稳定 系统的功能如下: 1.数据的爬取 2.用户的登录注册 3.热词统计,舆情统计 4.文章统计分析 5.发布地址统计 6.评论统计 7.情感分类统计 编程语言:py…...
ms-swift3 序列分类训练
目录 引言 一、数据集准备 二、训练/推理代码 2.1 训练 2.2 推理 三、性能验证 引言 swift 3.x支持了序列分类Command Line Parameters — swift 3.2.0.dev0 documentation 想尝试一下用多模态(图像)的序列分类与普通的图像分类任务有啥区别 一、…...
VSCode 实用快捷键
前文 VSCode 作为文本编辑神器, 熟练使用其快捷键更是效率翻倍, 本文介绍 VSCode 常用的实用的快捷键 实用快捷键 涉及到文本操作, 搜索定位, 多光标, 面板打开等快捷键 功能快捷键复制光标当前行 (不需要鼠标选中) Ctrl C 剪切光标当前行 (不需要鼠标选中) Ctrl X 当前行下…...
MVC模式和MVVM模式
目录 一、MVC模式和MVVM模式 1. MVC模式 2. MVVM 模式 3.在Qt中的应用示例 4.总结 二、MVC与MVVM模式的共同点和区别 1.共同点 2.区别 3.交互流程 4.总结 MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)是两种…...
CSS伪类选择器全解析:让你的样式更加灵活和智能
目录 前言 一、什么是伪类选择器? 二、常见的伪类选择器详解 1. :hover —— 悬停状态 2. :active —— 活动状态 3. :focus —— 焦点状态 综合案例 4. :first-child —— 第一个子元素 5. :last-child —— 最后一个子元素 6. :nth-child(n) —— 按顺序选…...
【GESP】2024年12月图形化一级 -- 飞行的小猫
飞行的小猫 1. 准备工作 (1)删除默认小猫角色。 (2)添加角色Cat Flying和Clouds。 (3)删除默认白色背景,添加背景Blue Sky 2。 2. 功能实现 (1)点击绿旗,…...
30填学习自制操作系统第二天
今天要干什么? 初步了解汇编语言使用汇编重新写个昨天的镜像文件继续开发 一: 什么是电信号? 电脑的处理中心是CPU,即“central process unit”的缩写,翻译成中文就是“中央处理单元”,顾名思义,他就是…...
MapReduce的工作原理及其在大数据处理中的应用
MapReduce是一种由Google提出的面向大数据并行处理的计算模型、框架和平台,它通过将复杂的数据处理任务分解为两个简单的阶段——Map(映射)和Reduce(归约),实现了分布式并行计算,极大地提高了数…...
vue3.x 的provide 与 inject详细解读
在 Vue 3.x 中,provide 和 inject 是一对用于实现依赖注入的 API。它们允许父组件向其所有子组件(无论嵌套多深)传递数据或方法,而不需要通过 props 逐层传递。这在开发复杂组件或高阶组件时非常有用。 1. provide 的基本用法 p…...
c#中“事件-event”的经典示例与理解
在C#编程语言中,事件(Event)是一个非常重要的概念,它提供了一种松耦合的方式,让对象间能够通知彼此,而无需直接联系。事件的使用可以让我们的代码更加灵活、可扩展且易于维护。 事件可以视作委托的实例&…...
《第三代大语言模型Grok 3:闪亮登场》
《第三代大语言模型Grok 3:闪亮登场》 在科技飞速发展的今天,人工智能领域的每一次重大突破都如同巨石投入平静湖面,激起千层浪。当地时间 2 月 15 日,马斯克在社交平台 X 上投下了这样一颗 “巨石”,他宣布旗下人工智能公司 xAI 开发的第三代大语言模型 Grok 3,将于北京…...
rem、em、vw区别
在前端开发里,rem、em、vw都是用来设置元素大小的单位,下面就用大白话讲讲它们的区别。 参考标准不一样 rem:就像大家都用同一把“大尺子”来量东西,这把“大尺子”就是网页里根元素(也就是 <html> 标签&#…...
最新Apache Hudi 1.0.1源码编译详细教程以及常见问题处理
1.最新Apache Hudi 1.0.1源码编译 2.Flink、Spark、Hive集成Hudi 1.0.1 3.flink streaming写入hudi 目录 1. 版本介绍 2. 安装maven 2.1. 下载maven 2.2. 设置环境变量 2.3. 添加Maven镜像 3. 编译hudi 3.1. 下载hudi源码 3.2. 修改hudi源码 3.3. 修改hudi-1.0.1/po…...
C语言简单练习题
文章目录 练习题一、计算n的阶乘bool类型 二、计算1!2!3!...10!三、计算数组arr中的元素个数二分法查找 四、动态打印字符Sleep()ms延时函数system("cls")清屏函数 五、模拟用户登录strcmp()函数 六、猜数字小游戏产生一个随机数randsrandRAND_MAX时间戳time() 示例 …...
C++ ——static关键字
1、static修饰局部变量---->静态局部变量 特点: (1)第一次调用时创建,然后第一次调用结束时没有被回收,以后每次调用,都延用上一次调用结束时的值,直到程序结束时,才被回收 &a…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
