MySQL 评估 ALTER TABLE 进度(5.7)

文若2年前技术文章1266

一、前言

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


文档维护:文若


相关文章

podman相关使用

Podman介绍Podman 是一个开源的容器运行时项目,可在大多数 Linux 平台上使用。Podman 提供与 Docker 非常相似的功能。正如前面提到的那样,它不需要在你的系统上运行任何守护进...

MySQL运维实战之ProxySQL(9.7)改写SQL

使用查询修改功能,可以在不改变应用程序的情况下,修改SQL语句。比如,我们可以使用SQL改写的功能,给SQL添加hint,以此来优化性能。delete from mysql_que...

PG的统计信息(三)

1.3 数据分布类统计信息1.3.1 pg_stats通过对pg_stats的查询,可以查看每个字段的数据分析统计信息,类似SQL Server的直方图,为优化器选择最佳执行计划提供依据,pg_sta...

HDFS迁移参数说明

HDFS迁移命令如下:hadoop distcp -Ddfs.namenode.kerberos.principal.pattern=* -Dmapreduce.job.hdfs-servers.to...

用了函数就无法使用索引?MySQL函数索引值得你拥有

MySQL中的索引,就像图书馆里的索引卡片,帮我们快速定位到想要的信息。但是,如果你对这些卡片动了点“手脚”,比如用个函数来“改造”一下索引字段,那么这些卡片可能就不再那么有效了,查找起来就得费劲多了...

切换不同的网络访问同一个业务报错"network error"

切换不同的网络访问同一个业务报错"network error"

问题现象:业务:xxx,使用谷歌浏览器登陆之后,访问“商品档案”模块,会提示“network error”报错内容,但是切换到其他浏览器测试是可以正常访问的,同时,在使用谷歌浏览器访问的情况下,如果切...

发表评论    

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