首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有办法在MySQL中查看ALTER TABLE语句的执行进度?

有没有办法在MySQL中查看ALTER TABLE语句的执行进度?
EN

Stack Overflow用户
提问于 2008-09-04 09:48:17
回答 8查看 20.6K关注 0票数 26

例如,我发出ALTER TABLE语句在一个InnoDB表中的MEDIUMTEXT字段上创建索引,该表有134k行,其中索引大小为255字节,字段中数据的平均大小为30k。该命令已经运行了大约15分钟(并且是数据库上唯一运行的命令)。有没有办法让我确定它是否会在5分钟、5小时或5天内完成?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-09-04 10:13:02

这是一个非常常见的请求--早在2005年就已经在bugs.mysql.com上被请求了。它已经存在于Oracle中,并且被列为有用的,但是"it is not a simple thing to do, so don't expect it to be implemented soon."。尽管那是在2005年:)

尽管如此,提出原始问题的人后来发布了MySQL 5.0的patch,向后移植到4.1,这可能会对您有所帮助。

票数 3
EN

Stack Overflow用户

发布于 2011-10-10 21:40:54

我能够执行这两个查询,并计算出还有多少行需要移动。

代码语言:javascript
复制
select count(*) from `myoriginalrable`;
select count(*) from `#sql-1e8_11ae5`;

这比比较磁盘上的文件大小更有帮助,因为从myisam更改为innodb等会改变行大小。

票数 20
EN

Stack Overflow用户

发布于 2012-08-21 20:53:21

对于InnoDB表,可以使用SHOW ENGINE INNODB STATUS查找执行ALTER TABLE的事务,并检查TX持有多少行锁。这是已处理的行数。详细解释如下:

http://gabrielcain.com/blog/2009/08/05/mysql-alter-table-and-how-to-observe-progress/

此外,MariaDB 5.3和更高版本还具有报告某些操作(包括ALTER TABLE)的进度的功能。请参见:

http://kb.askmonty.org/en/progress-reporting/

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档