MariaDB 5.3 中的进度报告

MariaDB 5.3 中有许多新功能。我期待其中的许多功能,但我最兴奋的功能之一是进度报告

在数据库领域,有些命令比其他命令需要更长的运行时间,这是事实。例如ALTER TABLE, LOAD DATA INFILE,以及添加和删除索引都需要时间来运行,这当然取决于您的数据和模式。我一直讨厌等待这些命令运行,却没有任何指示说明已经完成了多少进度或还剩下多少任务。随着即将发布的 MariaDB 5.3 版本,这一切都将改变。

在 MariaDB 5.3 中,有一个新的“Progress”列出现在SHOW PROCESSLIST(可以关闭此功能)的输出中,显示进度,并且还有三个新列(STAGE, MAX_STAGEPROGRESS_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或任何其他支持的命令,但至少我现在可以了解它们的内部情况,这是一件“非常好的事情”。

由 MariaDB 基金会发布

Daniel Bartholomew 是 MariaDB 的发布经理。他撰写了两本与 MariaDB 相关的书籍:《MariaDB 入门》(现已出版第二版)和《MariaDB Cookbook》,这两本书都由 Packt 出版。