MySQL InnoDBでは、 innodb_doublewrite = 0
。その他のデータベース この設定を微調整できないようです 。
InnoDBがデータの整合性と [〜#〜] acid [〜#〜] を維持できるようにするにはどうすればよいでしょうか?ダブルライトバッファリング?
InnoDBの二重書き込みバッファをオフにするのはどのような状況で安全になりますか?
私が考えることができる唯一の状況は、大きなmysqldumpをリロードすることです。どうして ?
InnoDB(Percona CTO Vadim Tkachenko)のこの図解をご覧ください。
図から、InnoDBバッファープールがダーティページを書き込むことがわかります。
.ibd
ファイルダブルライトバッファーを停止すると、mysqldumpは同じ 16Kページ をibdata1に書き込む必要がないため、テーブル内のデータとインデックスページをより速く書き込むことができます。
本番サーバーでは、二重書き込みバッファを無効にしないでください。データのロードを高速化するために(もちろん、メンテナンス中に)行う場合は、DBサーバーをリロードした直後に有効にしてください。
言い換えると、
innodb_doublewrite = 0
をmy.cnf
に追加SET GLOBAL innodb_fast_shutdown = 0;
を実行しますinnodb_doublewrite = 0
をmy.cnf
から削除しますSET GLOBAL innodb_fast_shutdown = 0;
を実行しますこの問題は、安全であると示唆していると思われるイヴトルドーによる this の投稿で十分に対処されました-彼の結論は、
結論
ZFSと同様に、ext4はトランザクション処理が可能で、InnoDBの二重書き込みバッファーをファイルシステムのトランザクションジャーナルに置き換えると、書き込み集中型のワークロードのパフォーマンスが55%向上します。 SSDおよび混合回転/ SSD構成でもパフォーマンスの向上が期待されます
彼は基本的に、もしあなたが適切なファイルシステムを持っているなら、そう、それは安全であると言っています。
ペルコナの人々は本当に自分のものを知っています。
イヴ・トルドーのブログの更新: https://www.percona.com/blog/2015/06/17/update-on-the-innodb-double-write-buffer-and-ext4-transactions/ =
要するに、それはおそらく安全ではありません。
コメントは指摘しているようです-FSがジャーナル付きのext4、またはZFSである場合、それはプルザプラグテストに耐えますが、単純なキル(またはOOM I疑わしい)FSは、アプリレイヤーから書き込まれた部分的なデータを拒否しないためです。
私の暫定ダブルライトバッファをオフにしても問題ない状況のリスト: