RDBの構成要素
リレーショナルデータベース(RDB)は大きく次の3つから構成されます。
- データベース
- プロセス
- 共有メモリ
データベース
データベースは、ディスク領域のOSファイルによって構成されています。
つまり、アクセスするたびにディスクI/Oによるコストがかかります。
表データの他、管理情報や変更履歴を格納するファイルも含まれます。
管理情報が格納されるファイルでは、データベースを構成するファイルの名前や場所、状態を管理しています。データベースを起動すると、まずこのファイルが参照されます。
変更履歴を格納することで、障害によってサーバーがダウンし、変更データが失われたとしても、変更履歴を元に処理を再実行することができるようになります。
データベースの3大ファイル
- 表データ
- 管理情報
- 変更履歴
プロセス
SQLの処理やファイルへの書き込みを行うプログラム群を指します。 プロセスは、「フォアグラウンドプロセス」と「バックグラウンドプロセス」に区別されます。
- フォアグラウンドプロセス
- SQLを実行する
- バックグラウンドプロセス
共有メモリ
SQL処理に必要なデータをユーザー間で共有するための領域を指します。
ここでいう必要なデータとは、表データに関するデータと変更履歴に書き込むデータのことです。
表データ
SQL実行によって得たい内容が同じ結果であれば、共有メモリへの参照に止めることで、無駄なディスクI/Oを削減できます。
SQLが発行されると最初に「SQL解析」が行われます。「対象の表がデータベースに存在するか」などを解析します。
当然、解析の際にもディスクI/Oが発生します。そのため、この解析結果も共有メモリに保存されるようになっています。
共有メモリに同じ解析結果があれば、それを参照しディスクI/Oを回避します。
解析が終了すると、変更や検索などのデータベースアクセスが行われます。この時、読み込まれたデータを共有メモリに保存します。
次回以降、同じデータを読み込む場合には、表にアクセスせずに共有メモリを参照することで、ディスクI/Oを回避します。
変更履歴
変更履歴もディスク領域に格納されたファイルですから、更新するたびにディスクI/Oが発生します。
データベースの更新処理のたびに変更履歴を更新するのではなく、ある程度の回数を溜め込んでから変更履歴をまとめて書き込むことで、ディスクI/Oの回数を減らします。