mysqldump tem uma opção “rápida”. Por que isso não está ativado por padrão?

4

No mysqldump docs eu vejo uma opção "--quick", no entanto não há nenhuma indicação de por que alguém iria querer isso desabilitado. Quais são as desvantagens de habilitá-lo ou por que é mesmo uma opção? Não deveria estar sempre ligado?

link

edit: Embora tenha ficado claro para mim que está habilitado por padrão, isso não está muito claro na documentação oficial (especialmente quando algumas amostras especificam a opção: link ). A tabela de opções não possui um campo especificando os padrões e a descrição de --quick não possui nota que esteja incluída por --opt. Deixarei o título da pergunta como foi, para que outras pessoas que procuram a mesma coisa pelo Google possam encontrar as informações com facilidade.

    
por Gerry 21.10.2013 / 05:51

2 respostas

4

--quick é ativado por padrão, já que é uma das opções incluídas em --opt , que é ele próprio ativado por padrão.

Da página do manual:

  • Use of --opt is the same as specifying --add-drop-table, --add-locks, --create-options, --disable-keys, --extended-insert, --lock-tables, --quick, and --set-charset. All of the options that --opt stands for also are on by default because --opt is on by default.

A página que você vinculou contém informações semelhantes.

  • --opt

    This option, enabled by default, is shorthand for the combination of --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset. It gives a fast dump operation and produces a dump file that can be reloaded into a MySQL server quickly.

    
por 21.10.2013 / 05:58
4

Enquanto --quick está ativado por padrão, só consigo pensar em um horário específico em que precisei desativar uma parte das opções --quick .

Um cliente meu tinha um banco de dados que seria instalado em um servidor Linux menor, quase sem memória (acho que era 2 GB). Um mysqldump feito com --quick tinha INSERTs estendidos. Esse mysqldump não pôde ser carregado neste Linux de 2 GB porque um buffer de inserção em massa não pôde ser alocado grande o suficiente para acomodar um único INSERT estendido. Isso estava me deixando louca. Isto é, até que eu decidi adicionar --skip-extended-insert .

O que isto fez o que faz com que cada comando INSERT insira uma linha. Enquanto isso explodiu o tamanho do mysqldump, e fez com que a carga do mysqldump levasse horas, isso resolveu o problema. Todo o conjunto de dados foi carregado em um servidor Linux instável.

CAVEAT : Por favor, não me pergunte por que um cliente deseja que o MySQL seja executado em um servidor Linux de 2 GB. Isso foi há mais de 5 anos, e eu ainda coço minha cabeça quando penso.

Quanto a --disable-keys , você pode usar --skip-disable-keys para permitir que uma tabela MyISAM seja recarregada e deixar os INSERTs preencherem todos os índices não exclusivos dinamicamente. Isso produziria índices um pouco desequilibrados se os dados fossem carregados já classificados. No entanto, isso seria necessário ao recarregar um mysqldump em um ambiente com pouca memória (como eu já lamentei relembrando).

    
por 22.10.2013 / 06:18

Tags