O MySQL InnoDB nos permite desabilitar o buffer de escrita dupla configurando innodb_doublewrite = 0
. Outros bancos de dados parecem não permitir que essa configuração seja ajustada .
Como o InnoDB ainda pode manter a integridade dos dados e o ACID se desabilitarmos o buffer de gravação dupla?
Em que situações será seguro desativar o buffer de escrita dupla do InnoDB?
A única situação em que consigo pensar é recarregar um mysqldump grande. Por quê ?
Confira esta representação pictórica do InnoDB (Percona CTO Vadim Tkachenko)
A partir da imagem, você pode ver que o InnoDB Buffer Pool grava páginas sujas em
.ibd
arquivo para cada tabela InnoDBDesligar o Double Write Buffer permitirá que o mysqldump grave dados e páginas de índice nas tabelas mais rapidamente, pois ele não precisa gravar as mesmas páginas de 16K em ibdata1.
Os Servidores de Produção nunca devem ter o Double Write Buffer desabilitado. Se você fizer isso para carregar dados mais rapidamente (durante a manutenção, é claro), habilite-o imediatamente após recarregar o servidor de banco de dados.
Em outras palavras,
innodb_doublewrite = 0
amy.cnf
SET GLOBAL innodb_fast_shutdown = 0;
innodb_doublewrite = 0
demy.cnf
SET GLOBAL innodb_fast_shutdown = 0;
Esta questão foi bem tratada neste post por Yves Trudeau que parece sugerir que é seguro - sua conclusão é que
Ele está basicamente dizendo que se você tiver um sistema de arquivos adequado, então sim, pode ser seguro.
O pessoal de Percona realmente sabe das coisas.
Atualizações no blog Yves Trudeau: https://www.percona.com/blog/2015/06/17/update-on-the-innodb-double-write-buffer-and-ext4-transactions/
Em suma, provavelmente não é seguro.
Os comentários parecem apontar que - embora ele sobreviva a um teste de puxar o plugue se o FS for ext4 com journal, ou ZFS, ele não sobreviverá a um simples kill (ou OOM, suspeito) porque o FS não rejeitará os dados escritos parciais da camada do aplicativo.
Minha lista provisória de situações em que não há problema em desativar o buffer de gravação dupla:
Quando as gravações são de setor único e o SO garante que as gravações de setor único sejam atômicas.
No momento, é apenas o Windows com innodb-page-size = 4K e disco de tamanho de setor de 4K. Nada definitivo foi dito sobre as gravações de setor único do Linux serem atômicas, embora eu presumo que possa ser, em algumas circunstâncias, e depender do sistema de arquivos.