地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【MySQL】innodb_doublewriteのDETECT_ONLYパラメータ

InnoDB: The innodb_doublewrite system variable, which enables or disables the doublewrite buffer, has two new settings, DETECT_ONLY and DETECT_AND_RECOVER. With the DETECT_ONLY setting, database page content is not written to the doublewrite buffer, and recovery does not use the doublewrite buffer to fix incomplete page writes. This lightweight setting is intended for detecting incomplete page writes only. The DETECT_AND_RECOVER setting is equivalent to the existing ON setting. For more information, see Doublewrite Buffer.

8.0.30で入っていたらしいこの機能。DETECT_ONLY設定では、メタデータのみがダブルライト・バッファに書き込まれます。データベースページの内容はダブルライトバッファに書き込まれず、リカバリは不完全なページ書き込みを修正するためにダブルライトバッファを使用しません。この軽量設定は、不完全なページ書き込みの検出のみを目的としているとのと。破損したページを検出するが破損は直さないよというもの。用途は考えてみたが思いつかなかった...起動の高速化とかが目的なのだろうか..??

innodb_doublewriteとは?

innodb_doublewriteは、InnoDBストレージエンジンで使用されるデータ保護機能の一つです。この機能の主な目的は、データの整合性を保つためのものであり、特にシステムクラッシュやハードウェア障害が発生した場合に役立ちます。

機能の概要

  • データ整合性の確保: InnoDBはデータページを書き込む際に、まずそのデータを「ダブルライトバッファ」という特別な領域に書き込みます。このバッファはデータファイルとは別の場所に存在します。

  • ダブルライトバッファへの書き込み: データページがダブルライトバッファに書き込まれた後、そのデータはディスク上の実際のデータファイルに書き込まれます。

  • 障害時の回復: 書き込み途中にクラッシュが発生した場合、InnoDBはダブルライトバッファを参照して、不完全なデータページを回復します。このプロセスにより、データの整合性が保たれます。