Summary:
SQLインターフェース層では,ユーザからのSQL文が入力され,字句解析,構文解析,構文木の生成,意味解析を経て,最終的な実行に先立つ中間表現へと変換される.この過程では,ユーザの認証や権限チェックも併せて実行される.
クエリプロセッサ層では,変換された問い合わせがクエリオプティマイザーによって処理される.クエリオプティマイザーは,問い合わせの実行にかかるコストを予測し,統計情報に基づいて結合順序やインデックスの選択などを最適化しつつ,最も効率的な実行計画を生成する.生成された実行計画は,クエリ実行エンジンによって逐次解釈され,必要な演算[結合,ソート,集約など]が適切なアルゴリズムによって実行される.この層では,中間結果のメモリ管理も行われる.
ストレージエンジン層では,物理データへのアクセスが行われる.トランザクションマネージャがACID特性の保証を行い,同時実行制御やロックの管理,デッドロックの検出と解決を行う.また,バッファマネージャがデータページのキャッシュ管理を担い,読み書きの効率化と整合性維持に寄与する.トランザクションの永続性とリカバリに関しては,ログマネージャがトランザクションログの記録とWAL[Write-Ahead Logging]の実装を通じて対応する.
アクセスメソッド層では,実際のデータ構造として使用されるB+Treeなどのインデックスやヒープファイルの管理が行われる.この層は,個々のレコードに対する挿入,削除,更新といった操作を処理し,範囲検索や点検索といったデータアクセス要求に効率的に応答する.
ファイルシステム層では,論理的なデータ構造を実際の物理ファイルへとマッピングし,ディスク上のページやブロックの割り当て,解放,I/O操作の制御,ファイルの拡張や圧縮といった低レベルの処理が行われる.
物理記憶層は,データを格納する実際のハードウェア装置を指し,HDD,SSD,RAID構成,あるいはネットワーク接続ストレージ等が対象となる.この層がRDBMS全体のストレージの土台を形成し,上位層が抽象化された記憶装置として利用する基盤を提供する.
RDBMSにおいては,各層が厳密に役割分担された構造を取ることで,保守性,最適化,拡張性が確保され,また上位層の設計変更が下位層に影響を与えずに済むというソフトウェア工学的利点も享受できる.この多層構造の中でも,クエリオプティマイザーはクエリプロセッサ層の中核として,SQLインターフェース層から渡された論理的問い合わせを実行効率の観点から最適化し,ストレージエンジン層での物理的なデータ処理を可能な限り高速に行えるよう変換するという,性能と整合性の両面において極めて重要な機能を担っている.
Mathematics is the language with which God has written the universe.