
DBMSは、テーブルや、インデックス等のデータベースの論理的な概念のみユーザーに見せるようにして、それに伴う物理的なファイルはわかるようにはなっていません。
しかし、容量が増えるのは物理的なファイルになるので、どれくらい容量を取るかは、インフラ設計に関わってくるので、理解が必要になります。
念のため覚えておきましょう。
DBに格納されるファイルの種類
DBに格納されるファイルは下記に分かれます。
- データファイル
- インデックスファイル
- システムファイル
- 一時ファイル
- ログファイル
データファイル
ユーザーがDBに格納するファイルになります。これに格納されているデータに対して、DBから「参照」や、「更新」がなされたりします。
非常に、頻繁にアクセスされるファイルになるので、最もディスクI/Oの負荷がかかります。
インデックスファイル
DBに作成されたインデックスが格納されるファイルです。DBMSでは、テーブルのデータとインデックスは分けて管理されます。
※ただ、開発者が明示的にこのファイルにアクセスするかどうかを意識する必要はありません。なぜなら、インデックスを使うかは自動的にDBMSが判断するためです。
システムファイル
DBMSの内部管理用データを格納します。これも開発者が意識する必要はありません。
一時ファイル
DBMSの内部で一時データを格納するために使用されます。SQLの処理が終了すると自動的に削除されるので、容量として意識する必要はありません。
一時的なデータとは?
例えば、「SQLのサブクエリの展開後のデータ」とか、「GROUP BY句等で展開したデータ」等が該当します。
ログファイル
テーブルのデータを変更した際に、すぐにデータファイルを更新するわけではないです。一旦ここに吐き出して、一括で「データファイル」を更新しています。
これも、一括で書き込まれた後に削除されるので、継続的に容量が増加するタイプのファイルではありません。
DBMSごとのログファイルの種類
DBMSの種類 | ログファイル名 |
---|---|
Orale | REDOログ |
PostgreSQL、SQLServer、DB2 | トランザクションログ |
MySQL | バイナリログ |
結論として。
ディスクI/Oの量が多くなるのは、「データファイル」と「インデックスファイル」、「一時ファイル」になります。
これらのファイルはできれば、RAID構成として別のディスクにするのが好ましいでしょう。
RAID構成については、下記の記事でも解説していますので、参考にされて下さい。
ただ、ディスクをたくさん用意する予算がないということであれば、最低限一番ディスクI/Oに負荷がかかる「データファイル」だけでも別ディスクに配置するという設計が望ましいです。
この記事へのコメントはありません。