mysqldump 有一个“快速”选项。为什么默认情况下不启用?

Ger*_*rry 7 mysql options

在 mysqldump 文档中,我看到了一个“--quick”选项,但是没有说明为什么有人想要禁用它。启用它有什么缺点或者为什么它甚至是一种选择?不应该一直开着吗?

http://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_quick


编辑:虽然我已经清楚地表明它是默认启用的,但官方文档中并不太清楚(特别是当某些示例指定选项时:http : //dev.mysql.com/doc/refman/ 5.7/en/copying-databases.html)。选项表没有指定默认值的字段,--quick 的描述没有说明它包含在--opt 中。我将保留问题标题,以便其他通过 Google 寻找相同内容的人可以轻松找到信息。

Rol*_*DBA 6

虽然--quick默认情况下是打开的,但我只能想到我不得不禁用部分--quick选项的特定时间。

我的一个客户有一个数据库,该数据库将安装在一个几乎没有内存的较小的 Linux 服务器上(我认为它是 2GB)。用 mysqldump 制作的具有--quick扩展的 INSERT。该 mysqldump 无法加载到这个 2GB 的 Linux 中,因为无法分配大到足以容纳单个扩展 INSERT 的大容量插入缓冲区。这让我发疯。也就是说,直到我决定添加--skip-extended-insert.

这做了什么使每个 INSERT 命令插入一行。虽然这会增加 mysqldump 的大小,并使 mysqldump 的加载需要几个小时,但这确实奏效了。整个数据集被加载到一个 rinky-dink Linux 服务器中。

警告:请不要问我为什么客户希望 MySQL 在 2GB Linux 服务器上运行。这已经是 5 年多前的事情了,现在回想起来还是会挠头。

至于--disable-keys,您可以使用--skip-disable-keys让 MyISAM 表重新加载并让 INSERT 即时填充所有非唯一索引。如果加载的数据已经排序,这会产生一些不平衡的索引。然而,在低内存环境中重新加载 mysqldump 时,这将是必要的(正如我已经遗憾地回忆起来的那样)。


Mic*_*ton 5

--quick 在默认情况下,因为它是包含在一个选项--opt,它本身就是默认。

从手册页:

  • 使用--opt是一样的规定--add-drop-table--add-locks--create-options--disable-keys--extended-insert--lock-tables--quick,和--set-charset--opt默认情况下,所有代表的选项也都处于打开状态,因为--opt默认情况下处于打开状态。

您链接到的页面包含类似信息。

  • --opt

    默认情况下启用的此选项是--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset. 它提供了一个快速的转储操作并生成一个可以快速重新加载到 MySQL 服务器的转储文件。