MySQL 评估 ALTER TABLE 进度(5.7)

文若2年前技术文章1150

一、前言

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


文档维护:文若


相关文章

ES字段类型与内存管理

ES字段类型与内存管理

一、ES常见字段类型:1、 概述字段是数据存储的最小微粒,根据数据的性质不同将数据分成不同的字段类型,熟悉不同字段类型的特性,对索引的Mapping设计、查询调优都极其重要。2、 关键参数Index:...

Doris集群部署

一、部署Doris集群1.部署doris服务(1)下载Doris            登陆地址https://doris.apache.org/download            选择需要下载的...

MySQL 8.0 新特性:Persisted System Variables

MySQL 8.0 新特性:Persisted System Variables

一、前言MySQL 5.7 之前我们修改参数变量后,需要将其手动写入到服务端配置文件中,否则重启后又恢复原有的配置,在 8.0 中可以在 MySQL 客户端直接将参数持久化,节省在服务器操作的步骤,下...

Oracle数据库恢复演练

1、演练目的验证核心系统数据库备份的有效性,在极端数据库故障情况下保证数据库存在一份可用的备份文件,为业务数据的安全提供保障。 2、演练准备提供一台2C16G本地60G的阿里ecs服务器,操...

ES运维(四)扩容方式迁移

ES运维(四)扩容方式迁移

1 迁移概述本次模拟es在线迁移方式:集群扩容-->数据迁移-->老节点下线-->服务重启刷新配置。 中间master替换的时候会有短暂的不可用。 另外业务测需注意:老节点下线前...

MySQL运维实战(4.3) SQL_MODE之ONLY_FULL_GROUP_BY

设置ONLY_FULL_GROUP_BY后,对有group by子句SQL,select的字段要么是group by中的字段,要么对字段进行聚合运算,否则sql执行报错。不设置ONLY_FULL_GR...

发表评论    

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