我的技术杂谈 欢迎关注 一起学习~
由于线上数据库有一个字段类型太小,导致数据溢出产生了线上 bug。现需将 days 字段由 tinyint(3) 类型变更为 smallint(5)。变更数据库要考虑 该操作是否会发生锁表操作?发生了锁表对当前业务是否会有致命影响?
查阅了一下网上的资料,发现 5.6.11
之后 alter
操作“大部分”都是不会锁表了。因此,我想确认一下:我要执行的 SQL 到底是否会锁表呢,能给出确切的证据吗?
在网上翻阅了很久的资料,这里记录一下结果。
1、确认表是否在被使用
show open tables where in_use > 0 ;
复制
2、查看当前数据库进程中正在执行的 SQL 线程信息
show processlist;
复制
3、当前运行的所有事务
SELECT * FROM information_schema.INNODB_TRX;
复制
4、当前出现的锁
# mysql 8.0.* 之前的版本使用该方式查询
SELECT * FROM information_schema.INNODB_LOCKS\G
# mysql 8.0.1 之后的版本使用
SELECT * FROM performance_schema.data_locks\G复制
5、由于锁占用导致等待的表
# mysql 8.0.1 之前的版本使用该方式查询
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS\G
# mysql 8.0.1 之后的版本使用
SELECT * FROM performance_schema.data_lock_waits\G复制
注意:第4-5步,在 8.0.*
版本中对应的表发送了变更。目前在网上找的资料都是 8.0.*
之前的版本。对于information_schema.INNODB_LOCKS
、INFORMATION_SCHEMA.INNODB_LOCK_WAITS
在 5.6.40
和 5.7.29
中这两个表确实是存在的。
但我个人数据库版是 8.0.23
版,发现该表不存在了
查阅了官方的文档,发现这两个表已经被移除了,对应的锁信息在performance_schema.data_lock_*
中
通过人为模拟一个不提交事务发生锁表,查询 data_locks
情况如下图
参考文档
MySQL 锁表后快速解决方法 及 MySQL中的锁:https://weikeqin.com/2019/09/05/mysql-lock-table-solution/ 21.4.14 The INFORMATION_SCHEMA INNODB_LOCKS Table:https://dev.mysql.com/doc/refman/5.6/en/information-schema-innodb-locks-table.html 21.4.15 The INFORMATION_SCHEMA INNODB_LOCK_WAITS Table:https://dev.mysql.com/doc/refman/5.6/en/information-schema-innodb-lock-waits-table.html 27.12.13.1 The data_locks Table:https://dev.mysql.com/doc/refman/8.0/en/performance-schema-data-locks-table.html 27.12.13.2 The data_lock_waits Table:https://dev.mysql.com/doc/refman/8.0/en/performance-schema-data-lock-waits-table.html
文章转载自李明双的身边,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【MySQL 30周年庆】MySQL 8.0 OCP考试限时免费!教你免费领考券
墨天轮小教习
2857次阅读
2025-04-25 18:53:11
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
严少安
834次阅读
2025-04-25 15:30:58
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
481次阅读
2025-04-17 17:02:24
MySQL 9.3 正式 GA,我却大失所望,新特性亮点与隐忧并存?
JiekeXu
424次阅读
2025-04-15 23:49:58
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
371次阅读
2025-04-15 14:48:05
记录MySQL数据库的一些奇怪的迁移需求!
陈举超
274次阅读
2025-04-15 15:27:53
MySQL 8.0 OCP 1Z0-908 考试解析指南(二)
JiekeXu
271次阅读
2025-04-30 17:37:37
SQL优化 - explain查看SQL执行计划(下)
金同学
256次阅读
2025-05-06 14:40:00
MySQL 8.0 OCP 1Z0-908 考试题解析指南
青年数据库学习互助会
235次阅读
2025-04-30 12:17:54
MySQL 8.4 新特性深度解析:功能增强、废弃项与移除项全指南
JiekeXu
226次阅读
2025-04-18 20:21:32