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

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

在 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 寻找相同内容的人可以轻松找到信息。

答案1

--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 服务器的转储文件。

答案2

虽然--quick默认情况下处于启用状态,但我只能想到一个特定时间我必须禁用部分选项--quick

我的一个客户有一个数据库,需要安装在一个较小的 Linux 服务器上,这个服务器几乎没有内存(我认为是 2GB)。用 创建的 mysqldump--quick有扩展的 INSERT。该 mysqldump 无法加载到这个 2GB 的 Linux 中,因为无法分配足够大的批量插入缓冲区来容纳单个扩展的 INSERT。这让我很抓狂。直到我决定添加--skip-extended-insert

这会导致每个 INSERT 命令插入一行。虽然这会增加 mysqldump 的大小,并使 mysqldump 的加载需要几个小时,但还是成功了。整个数据集被加载到一台简陋的 Linux 服务器中。

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

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

相关内容