MySQL InnoDB nous permet de désactiver la mise en mémoire tampon en double écriture en définissant innodb_doublewrite = 0
. Autres bases de données ne semble pas permettre de modifier ce paramètre .
Comment InnoDB pourrait-il encore être en mesure de maintenir l'intégrité des données et ACIDE si nous désactivons mise en mémoire tampon en double écriture?
Dans quelles situations sera-t-il sûr de désactiver le tampon InnoDB doublewrite?
La seule situation à laquelle je peux penser est le rechargement d'un grand mysqldump. Pourquoi ?
Découvrez cette représentation picturale d'InnoDB (Percona CTO Vadim Tkachenko)
Sur la photo, vous pouvez voir que le pool de tampons InnoDB écrit des pages sales dans
.ibd
fichier pour chaque table InnoDBLa fermeture du double tampon d'écriture permettra à un mysqldump d'écrire des données et des pages d'index dans les tables plus rapidement car il n'a pas à écrire la même chose 16K pages à ibdata1.
Les serveurs de production ne doivent jamais désactiver le tampon d'écriture double. Si vous le faites pour charger les données plus rapidement (pendant la maintenance bien sûr), activez-les immédiatement après avoir rechargé le serveur DB.
En d'autres termes,
innodb_doublewrite = 0
à my.cnf
SET GLOBAL innodb_fast_shutdown = 0;
innodb_doublewrite = 0
de my.cnf
SET GLOBAL innodb_fast_shutdown = 0;
Cette question a été bien traitée dans this post par Yves Trudeau qui semble suggérer que c'est sûr - sa conclusion est que
Conclusion
Comme ZFS, ext4 peut être transactionnel et le remplacement du double tampon d'écriture InnoDB par le journal des transactions du système de fichiers entraîne une augmentation de 55% des performances pour une charge de travail intensive en écriture. Des gains de performances sont également attendus pour les configurations SSD et mixtes spinning/SSD
Il dit essentiellement que si vous avez un système de fichiers approprié, alors oui, cela peut être sûr.
Les gens de Percona connaissent vraiment leurs affaires.
Mises à jour sur le blog Yves Trudeau: https://www.percona.com/blog/2015/06/17/update-on-the-innodb-double-write-buffer-and-ext4-transactions/ =
Bref, ce n'est probablement pas sûr.
Les commentaires semblent indiquer que - même s'il survivra à un test de tirage si le FS est ext4 avec journal, ou ZFS, il ne survivra pas à un simple kill (ou OOM I suspect) parce que le FS ne rejettera pas les données écrites partielles de la couche d'application.
Ma provisoire liste des situations où il est possible de désactiver le tampon de double écriture: