В документации mysqldump я вижу параметр «--quick», однако нет никаких указаний на то, почему кто-то может захотеть отключить его. Каковы недостатки его включения или почему это вообще вариант? Разве он не должен быть всегда включен?
http://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_quick
edit: Хотя мне было ясно, что он включен по умолчанию, это не слишком ясно из официальной документации (особенно когда в некоторых примерах указывается опция: http://dev.mysql.com/doc/refman/5.7/en/copying-databases.html). В таблице параметров нет поля, определяющего значения по умолчанию, а в описании --quick нет примечания о том, что он включен --opt. Я оставлю название вопроса без изменений, чтобы другие пользователи, которые ищут то же самое через Google, могли легко найти информацию.
Пока --quick
включен по умолчанию, я могу вспомнить только один конкретный случай, когда мне пришлось отключить часть --quick
параметры.
У моего клиента была база данных, которая должна была быть установлена на меньшем сервере Linux почти без памяти (я думаю, это было 2 ГБ). Mysqldump, созданный с помощью --quick
имеет расширенные INSERT. Этот mysqldump не может быть загружен в этот 2-гигабайтный Linux, потому что буфер массовой вставки не может быть выделен достаточно большим для размещения одного расширенного INSERT. Это сводило меня с ума. То есть, пока я не решил добавить --skip-extended-insert
.
Что это заставило каждую команду INSERT вставить одну строку. Хотя это увеличило размер mysqldump и заставило загрузку mysqldump занять несколько часов, это помогло. Весь набор данных был загружен на запущенный Linux-сервер.
ПРЕДОСТЕРЕЖЕНИЕ : Пожалуйста, не спрашивайте меня, почему клиент хочет, чтобы MySQL работал на сервере Linux 2 ГБ. Это было более 5 лет назад, и я все еще ломаю голову, когда думаю об этом.
Что касается --disable-keys
, вы могли бы использовать --skip-disable-keys
чтобы позволить MyISAM-таблице перезагружаться и позволить INSERT заполнять все неуникальные индексы на лету. Это привело бы к получению несколько однобоких индексов, если бы данные были загружены уже отсортированными. Тем не менее, это будет необходимо при перезагрузке mysqldump в среде с низким объемом памяти (как я уже с грустью вспоминал).
--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.