在mysqldump文档中,我看到一个“ – 快速”选项,但没有迹象表明为什么有人会希望这个禁用。 有什么不利条件,为什么它甚至是一个select? 难道它不是总是在?
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寻找相同内容的其他人可以轻松find相关信息。
--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组合的缩写--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset。 它提供了一个快速转储操作,并生成一个可以快速重新加载到MySQL服务器的转储文件。
虽然--quick默认是打开的,但我只能想到一个特定的时间,我必须禁用部分--quick选项。
我的一个客户有一个数据库,要安装在一个几乎没有内存的小型Linux服务器上(我认为它是2GB)。 使用--quick的mysqldump扩展了INSERT。 该mysqldump无法加载到这个2GB的Linux,因为大容量插入缓冲区不能被分配足够大,以容纳一个扩展插入。 这让我疯狂。 也就是说,直到我决定添加--skip-extended-insert 。
这是什么使每个INSERT命令插入一行。 虽然这使得mysqldump的大小变大,并且使得mysqldump的负载耗时数小时,但是这并没有成功。 整个数据集被加载到一个rinky-dink Linux服务器中。
CAVEAT :请不要问我为什么客户希望MySQL在2GB的Linux服务器上运行。 这是5年多前的事情,当我想起时,我还是挠了挠头。
至于--disable-keys ,你可以使用--skip-disable-keys让MyISAM表重新加载,让INSERTsdynamic填充所有非唯一索引。 如果数据已经被加载,这会产生一些不平衡的索引。 尽pipe如此,当在低内存环境下重新加载mysqldump时,这是必要的(正如我已经记得的那样)。