千家信息网

如何进行MySQL metadata锁实验

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章将为大家详细讲解有关如何进行MySQL metadata锁实验,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在对已经存在的表执行DDL语句(例
千家信息网最后更新 2025年11月07日如何进行MySQL metadata锁实验

这篇文章将为大家详细讲解有关如何进行MySQL metadata锁实验,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

在对已经存在的表执行DDL语句(例如更改表结构、DROP表等操作)的时候,如果有与这个表相关联的事务没有提交,就会产生metadata锁等待。
这个时候,需要提交与这张表相关联的事务,才会将metadata锁释放。

创建一张表
mysql> CREATE TABLE `travelrecord` (
-> `id` bigint(20) NOT NULL,
-> `user_id` varchar(100) DEFAULT NULL,
-> `traveldate` date DEFAULT NULL,
-> `fee` decimal(10,0) DEFAULT NULL,
-> `days` int(11) DEFAULT NULL,
-> PRIMARY KEY (`id`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=gbk;
Query OK, 0 rows affected (0.09 sec)

会话一
开启一个事务,查询新创建的表
mysql> begin;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from travelrecord;
Empty set (0.00 sec)
会话二
drop刚刚创建的表,会发生锁等待
mysql> drop table travelrecord;


会话一
查询会话
mysql> show processlist;
+----+------+-----------------+------+---------+------+---------------------------------+-------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------+------+---------+------+---------------------------------+-------------------------+
| 3 | root | 127.0.0.1:34875 | sale | Query | 0 | init | show processlist |
| 24 | root | 127.0.0.1:34876 | sale | Query | 1058 | Waiting for table metadata lock | drop table travelrecord |
+----+------+-----------------+------+---------+------+---------------------------------+-------------------------+
2 rows in set (0.00 sec)

提交事务
mysql> commit;
Query OK, 0 rows affected (0.03 sec)

会话二
锁释放,DROP语句顺利执行
mysql> drop table travelrecord;
Query OK, 0 rows affected (58 min 40.02 sec)

数据库中没有了锁
mysql> show processlist;
+----+------+-----------------+------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------+------+---------+------+-------+------------------+
| 3 | root | 127.0.0.1:34875 | sale | Sleep | 76 | | NULL |
| 24 | root | 127.0.0.1:34876 | sale | Query | 0 | init | show processlist |
+----+------+-----------------+------+---------+------+-------+------------------+
2 rows in set (0.00 sec)

关于如何进行MySQL metadata锁实验就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

事务 实验 内容 文章 时候 更多 知识 篇文章 语句 关联 查询 不错 数据 数据库 结构 质量 一开 建一 参考 帮助 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 分布式数据库无法获取文件 python 处理数据库 网络技术服务公司纳税筹划 在上海软件开发 工资标准 安徽直播平台软件开发公司 宏浩软件开发 服务器硬件能放在电脑上吗 税控服务器管理系统停用了 普陀区智能网络技术代理品牌 我的世界服务器注册 北京+软件开发+日本 企业it软件开发外包 南京软通网络技术有限公司 焦作大学网络技术学院 环保类软件开发企业 法律对网络安全的重要意义 网络安全研究性学习活动实录 阿里云服务器到期后发票 国家实行网络安全等级保护制 软件开发培训的服务怎么样 网络安全检查自查工作报告 单招计算机网络技术一般问什么 黄埔区新能源软件开发概念设计 力控数据库无法建立连接 网络安全甲方和乙方的区别 sql 打开数据库语句 maven 配置数据库 昆明网络安全管理办法 金蝉科技互联网观察 小白网络技术科普课(动画)
0