InnoDB
は、擬似非同期
I/O を使用します:InnoDB
は、多数の I/O
スレッドを作成して、先読みなどの I/O
操作に対応します。
InnoDB
には 2
つの先読みヒューリスティックがあります:
シーケンシャル先読みでは、InnoDB
がテーブル領域内のセグメントへのアクセスパターンがシーケンシャルであることに気づくと、I/O
システムにデータベースページの読み取りバッチをあらかじめ連絡します。
任意の先読みでは、InnoDB
がテーブル領域内のいくつかのスペースがバッファープールに完全に読み取られている最中であることに気づくと、I/O
システムに残りの読み取りを連絡します。
InnoDB
は
二重書き込み
と呼ばれる新しいファイルフラッシュテクニックを利用します。これは、OS
のクラッシュや停電後の復旧に安全性を追加し、また
fsync()
オペレーションの必要性を削減することでほとんどの種類の
Unix の性能を向上させます。
二重書き込みとは、データファイルにページを書き込む前に、InnoDB
が最初にそれらを二重書き込みバッファーと呼ばれる隣接するテーブル領域エリアに書き込むことを意味します。二重書き込みバッファーへの書き込みとフラッシュが完了したあとに
InnoDB
はデータファイル内の正しい位置にページを書き込みます。もし
OS
がページ書き込みの最中にクラッシュしたら、InnoDB
は復旧の最中に二重書き込みバッファーからページの有効なコピーを見つけることができます。