MariaDB 5.3 中的进度报告
MariaDB 5.3 中有许多新功能。我期待其中的许多功能,但我最兴奋的功能之一是进度报告。
在数据库领域,有些命令比其他命令需要更长的运行时间,这是事实。例如ALTER TABLE, LOAD DATA INFILE,以及添加和删除索引都需要时间来运行,这当然取决于您的数据和模式。我一直讨厌等待这些命令运行,却没有任何指示说明已经完成了多少进度或还剩下多少任务。随着即将发布的 MariaDB 5.3 版本,这一切都将改变。
在 MariaDB 5.3 中,有一个新的“Progress”列出现在SHOW PROCESSLIST(可以关闭此功能)的输出中,显示进度,并且还有三个新列(STAGE, MAX_STAGE和PROGRESS_DONE)在INFORMATION_SCHEMA.PROCESSLIST中,这些列允许您查看您处于哪个过程阶段、总共有多少阶段以及当前阶段完成了多少。此外,mysqld服务器会按照指定的间隔(默认为每 5 秒,0 将禁用此功能)向客户端发送进度报告。在 MariaDB 5.3 的mysql命令行客户端中,这些进度报告看起来像这样
MariaDB [test]> alter table my_mail engine=maria; Stage: 1 of 2 'copy to tmp table' 5.37% of stage done
目前,以下命令可以将进度报告消息发送给客户端
- ALTER TABLE
- ADD INDEX
- DROP INDEX
- LOAD DATA INFILE(不包括LOAD DATA LOCAL INFILE,因为在这种情况下我们不知道文件的大小)。
一些 Aria 存储引擎操作也支持进度消息
- CHECK TABLE
- REPAIR TABLE
- ANALYZE TABLE
- OPTIMIZE TABLE
第三方客户端和存储引擎可以轻松地添加对接收和发送(分别)这些进度报告的支持。详细信息请参阅 AskMonty 知识库中的“进度报告”页面。除了 MariaDB 命令行客户端之外,还有一个应用程序已更新以支持进度报告,它是mysql命令行客户端)就是‘mytop’程序,该程序将包含在 MariaDB 5.3 的源代码和二进制包中。
进度报告不会加速ALTER TABLE或任何其他支持的命令,但至少我现在可以了解它们的内部情况,这是一件“非常好的事情”。
有一天有没有可能获得 SELECT 的进度?即使是粗略的估计也会有帮助。
即使是粗略的估计也会有帮助。