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