B木とB+木:データベースインデックスはなぜこんなに速いのか
二分探索木から始めよう。なぜノードがディスクページに一致する必要があるのか、B木がいかに木の高さを極限まで抑えるか、そしてRDBが最終的にB+木を選んだ理由(葉ノードの連結リストにより範囲クエリが繰り返しの上下走査から順次読み取りに変わる)、最後にノード分割アルゴリズムを解説する。
二分探索木から始めよう。なぜノードがディスクページに一致する必要があるのか、B木がいかに木の高さを極限まで抑えるか、そしてRDBが最終的にB+木を選んだ理由(葉ノードの連結リストにより範囲クエリが繰り返しの上下走査から順次読み取りに変わる)、最後にノード分割アルゴリズムを解説する。
単一ファイルで ACID をどう実現するか。ページと B+tree のレイアウト、ロールバックジャーナルから WAL への進化、並行アクセスを制御する 5 つのロック状態、性能を引き出す 4 つの PRAGMA 設定(WAL を有効化、synchronous を下げる、cache_size を増やす、mmap を有効化)を扱う。