MySQL 评估 ALTER TABLE 进度(5.7)

文若3年前技术文章1415

一、前言

  • 问题:大表里执行 ALTER TABLE 的时候,经常会比较忐忑,会面临 “跑又跑不完 Kill 也不敢 Kill” 的窘境。

  • 需求:客户在执行 ALTER TABLE 时也会让我们来评估影响的计算时间,我们可以将监控方法提供给客户。

二、实验

  1. 来源于:MySQL 5.7 官方文档

  2. 启动相关服务参数:

UPDATE performance_schema.setup_instruments
       SET ENABLED = 'YES'
       WHERE NAME LIKE 'stage/innodb/alter%';

 UPDATE performance_schema.setup_consumers
       SET ENABLED = 'YES'
       WHERE NAME LIKE '%stages%';
  1. 执行一个 DDL 操作:

ALTER TABLE sbtest1 ADD COLUMN middle_name varchar(200);
  1. 查询 ALTER TABLE 不断获取进度:

select stmt.SQL_TEXT as sql_text,
       concat(WORK_COMPLETED, '/', WORK_ESTIMATED) as progress,
       (stage.TIMER_END - stmt.TIMER_START) / 1e12 as current_seconds,
       (stage.TIMER_END - stmt.TIMER_START) / 1e12 * (WORK_ESTIMATED - WORK_COMPLETED) /
       WORK_COMPLETED as remaining_seconds
from performance_schema.events_stages_current stage,
     performance_schema.events_statements_current stmt
where stage.THREAD_ID = stmt.THREAD_ID
  and stage.NESTING_EVENT_ID = stmt.EVENT_ID;

sql_text

progress

current_seconds

remaining_seconds

ALTER TABLE sbtest1 drop COLUMN middle_name

68182/616441

2.569207816

20.659284092463466

sql_text

progress

current_seconds

remaining_seconds

ALTER TABLE sbtest1 drop COLUMN middle_name

421800/616441

23.386745981

10.791891001630681


文档维护:文若


相关文章

Nginx-Ingress和traefik区别

Nginx-Ingress和traefik区别

Nginx-Ingress和traefik区别1. Ingress Controllerk8s 是通过一个又一个的 controller 来负责监控、维护集群状态。Ingress Controller...

Storage Classes之nfs provisioner

Storage Classes之nfs provisioner

每个 StorageClass 都有一个制备器(Provisioner),用来决定使用哪个卷插件制备 PV。 该字段必须指定。这里我们使用nfs作为StorageClass的制备器,官方并未对nfs进...

Kafka报 IO Exception(many open files)

Kafka报 IO Exception(many open files)

1 线上问题kafka报错many open files,查看日志如下截取部分错误信息2 问题分析首先看kafka监控平台的一些监控指标,topic列表中关于topic的信息项如下所示:(1)topi...

两款方案详解,企业线下数据库迁移至云上ScyllaDB(1)

两款方案详解,企业线下数据库迁移至云上ScyllaDB(1)

方案一通过扩缩容(上线新节点和下线老节点)方式迁移,这个过程数据库通过数据传输到新节点。整个过程不停机上下线节点的数据传输时存在压力。某个节点存在不可控的故障导致节点无法启动时,数据存在丢失的风险。新...

PostgreSQL 锁等待排查

PostgreSQL 锁等待排查

说明在数据库中,常用 锁 和 MVCC 来保障事务的一致性及提高并发性。锁问题的定位和排查也是数据库运维人员必会的技能,本篇文章介绍 PostgreSQL 如何排查定位锁堵塞问题。1. Postgre...

在kubernetes中,让某个node成为专属节点

如何让node 去”选择”只有谁(pod)能部署到自身上面?看了下现有的Node Selectors、Node Affinity、Node Taints, 经过比对,发现Node Taints 更适合...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。