`
nicegege
  • 浏览: 588275 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql添加索引导致《Waiting for table metadata lock》

 
阅读更多

1.背景

今天收到线上数据库慢查询报警,对用户造成了严重影响。需要快速处理恢复正常运行。这应该算是一次严重的线上事故。

2.mysql中show processlist 出现大量的 Waiting for table metadata lock

首先需要定位原因。

3.大概原因:对electric_invoice这个表上添加了联合索引。但是这个表有未提交的事物。添加索引属于ddl操作,会等待事务完成。事务迟迟未完成。当该表处于《Waiting for table metadata lock》状态,将阻塞其他任何操作,包含读。所以设计该表的sql查询是慢查询。长达几百几千秒。

 

该问题参考https://www.cnblogs.com/digdeep/p/4892953.html

 

 

 

分享到:
评论

相关推荐

    MySQL出现Waiting for table metadata lock的原因方法

    MySQL在进行alter table等DDL操作时,有时会出现Waiting for table metadata lock的等待场景。而且,一旦alter table TableA的操作停滞在Waiting for table metadata lock的状态,后续对TableA的任何操作(包括读)...

    mysql锁表解表

    MySQL在进行alter table等DDL操作时,有时会出现Waiting for table metadata lock的等待场景。而且,一旦alter table TableA的操作停滞在Waiting for table metadata lock的状态,后续对TableA的任何操作(包括读)...

    MySQL表结构变更你不可不知的Metadata Lock详解

    想必玩过mysql的人对Waiting for table metadata lock肯定不会陌生,一般都是进行alter操作时被堵住了,导致了我们在show processlist 时,看到线程的状态是在等metadata lock。本文会对MySQL表结构变更的Metadata ...

    mysql-常见问题,索引优化

    `STATE`列显示了每个线程当前的活动状态,如`Waiting for table metadata lock`、`Sending data`等,有助于诊断阻塞和性能问题。 17. 松散索引和紧凑索引 松散索引(也称为非聚簇索引)不包含主键数据,只存储索引...

    19.为什么我只查一行的语句也执行这么慢?1

    #### 状态:Waiting for table metadata lock 当查询长时间不返回时,可能是由于表级元数据锁(Metadata Lock, MDL)导致的。MDL锁用于保护表结构的安全,确保在结构变更期间数据的一致性。当一个线程试图获取MDL锁...

    详细分析mysql MDL元数据锁

    当你看到 waiting for table metadata lock 时,那就是遇到MDL元数据锁了。本篇文章将会介绍MDL锁的产生与排查过程。 1.什么是MDL锁 MDL全称为metadata lock,即元数据锁。MDL锁主要作用是维护表元数据的数据一致性...

    19.为什么我只查一行的语句,也执行这么慢?1

    这种情况通常表现为在`SHOW PROCESSLIST`命令中看到查询状态为“Waiting for table metadata lock”。这表明另一个线程正在请求或持有表的MDL(Metadata Lock)写锁,从而阻止了读取操作,如简单的`SELECT`语句。在...

    Mysql解决USE DB堵塞详解

    2. `DROP TABLE A` - 在等待`Waiting for table metadata lock`,这意味着想要删除表A,但无法获取到相应的MDL锁。 3. `SELECT * FROM A` - 同样处于`Waiting for table metadata lock`状态,表示查询A表时,需要的...

    MySQL Metadata Locking

    表定义缓存是MySQL服务器的一个重要组件,用于缓存表的元数据信息,如列定义、索引信息等。通过缓存这些信息,可以显著提高查询的性能。此外,该缓存还支持一些高级功能,比如动态调整缓存大小以适应不同的负载情况...

    MySQL运维-故障处理手册

    1. **Waiting for table metadata lock:** - **含义:**表明当前线程正在等待获取表的元数据锁。 - **解决方法:** - 检查是否有其他线程正在对同一张表进行结构修改(如ALTER TABLE)。 - 尽量减少对表结构的...

    mysql45讲 19.为什么我只查一行的语句,也执行这么慢?1

    使用 show processlist 命令查看 Waiting for table metadata lock 的示意图。 这个状态表示的是,现在有一个线程正在表 t 上请求或者持有 MDL 写锁,把 select 语句堵住了。在第 6 篇文章《全局锁和表锁:给表加个...

    mysql show processlist 显示mysql查询进程

    7. **State**:这是线程执行SQL语句的具体阶段,例如Waiting for table metadata lock(等待表元数据锁)、Sending data(发送数据)或Locked(锁定)。这些状态可以帮助分析查询的执行流程。 8. **Info**:展示...

    MySQL for Python - 完美列印版.pdf

    PACKET 保证完整版 MySQL for Python Integrate the flexibility of Python and the power of MySQL to boost the productivity of your ...Chapter 13: Showing MySQL Metadata 369 Chapter 14: Disaster Recovery 393

    MySQL如何查看元数据锁阻塞在哪里

    如果某个会话处于等待状态(Waiting for table metadata lock),这表明它正在等待另一个会话释放元数据锁。 2. 通过`information_schema.innodb_trx`表:这个内部表包含了所有活跃的InnoDB事务信息。通过查询此表...

    Flink无法获取Kafka Topic Metadata异常及解决.docx

    接着,检查了 Kafka 的安全认证,发现是安全认证没有通过,导致 Flink 无法获取 Kafka Topic Metadata。 三、原因 原因是 Kafka 安全认证没有通过,之前以为是 Flink-conf.yaml 中配置后不需要再在代码中认证了,但...

    SAP FRC接口调用calling RFC_METADATA_GET -- see log for details报错解决方案

    SAP.Middleware.Connector.RfcCommunicationException:“destination XXXX failed when calling RFC_METADATA_GET -- see log for details” 猜测的原因: 老的DLL库在获取接口实例时,会触发“RFC_METADATA_GET”...

Global site tag (gtag.js) - Google Analytics