MySQL 评估 ALTER TABLE 进度(5.7)

文若2年前技术文章951

一、前言

  • 问题:大表里执行 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


文档维护:文若


相关文章

mysql表结构对比工具介绍

mysql表结构对比工具介绍

一、AmpNmp.DatabaseCompare工具1、工具特点:优点:比较两个数据库全部表结构的差异,包括表名、存储引擎、字符集、注释的不同,以及每张表中的字段名、数据类型、字符集、默认值、注释的不...

阿里云配置 keepalived

1 安装 keepalivedyum install keepalivedmv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.c...

 MySQL运维实战(1.2)安装部署:使用二进制安装部署

MySQL运维实战(1.2)安装部署:使用二进制安装部署

一般在生产环境,我们会使用二进制安装的方式安装MySQL。使用二进制安装,在处理单机多实例、升级MySQL等场景下更加方便。如果有特殊的需求(比如要打一些patch),我们还可以自己编译二进制。1、下...

开源大数据集群部署(二十)Trino部署

开源大数据集群部署(二十)Trino部署

2.9.1 解压trino的包到opt目录cd /root/bigdata tar -xzvf trino-server-389.tar.gz -C /opt/ ln -s /opt/trino-...

Flume使用案例之Flume与Flume之间数据传递,多Flume汇总数据到单Flume

目标:flume11监控文件hive.log,flume-22监控某一个端口的数据流,flume11与flume-22将数据发送给flume-33,flume33将最终数据写入到HDFS。分步实现:1...

PostgreSQL 基于时间点恢复

前言本篇文章介绍 PostgreSQL 基于时间点恢复(point-in-time-recover)需要的条件及恢复过程,属于操作说明。1. WAL 日志WAL(Write Ahead Log) 日志...

发表评论    

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