最近、基本的なことがちょくちょく分からなくなるので、基本的な内容について改めて勉強しています。
これから、SQL Server のデータベースの基本的な内容について数回に分けてまとめていきたいと思います。
基本大事!!
■データベースの最小構成
SQL Server のデータベースですが以下の要素で構成されます。
- ファイルグループ
- データファイル
- ログファイル
最小のデータベース構成は以下になります。
データベースには必ず PRIMARY というプライマリファイルグループとそのファイルグループ内に関連付けられた .mdf の拡張子を持つデータファイル (プライマリデータファイル)、ldf の拡張子を持つログファイルで構成がされます。
■プライマリファイルグループってなにもの
データベースには必ずプライマリファイルグループが存在します。
このファイルグループについては Books Online (BOL) に以下のように記載されています。
プライマリ ファイルが含まれているファイル グループ。すべてのシステム テーブルがプライマリ ファイル グループに割り当てられます。
ファイルグループはデータファイルを束ねるための論理的な空間になります。
# OS 上にファイルとしては存在せず、SQL Server のデータベース内に論理的な情報として値が保持されます。
プライマリファイルグループはプライマリファイル (.mdf) を所属させるための論理的な空間ということになります。
■プライマリデータファイルってなにもの
プライマリファイルグループはプライマリファイルを所属させるための論理的な空間ということを書きました。
次は、このプライマリファイルグループについて調べていきたいと思います。
先ほどと同じ情報内に、プライマリファイルについての説明があります。
プライマリ データ ファイルにはデータベースの起動情報が含まれており、データベース内の他のファイルを指し示します。ユーザー データおよびオブジェクトは、このファイルまたはセカンダリ データ ファイルに格納できます。各データベースには 1 つのプライマリ データ ファイルがあります。プライマリ データ ファイルに推奨されるファイル名拡張子は .mdf です。
プライマリファイルはデータベースに起動に必要な情報や、ほかのファイルへの参照情報が含まれていると記載されていますね。
先ほどのファイルグループには、システムテーブルがプライマリファイルに含まれると書かれています。
他のファイルへの参照情報に関してはシステムテーブルに含まれる情報になると思うのですが以下のような情報がプライマリデータファイルに格納されているということですね。
データベースの起動情報というものに関してはブートページ (Pagetype=13) というページに書かれている情報が該当すると思います。
SQL Server では複数のデータファイルを持つことが可能です。
二つ目以降のデータファイルは拡張子が .ndf となりセカンダリデータファイルと呼ばれます。
プライマリデータファイル (.mdf) と セカンダリデータファイル (.ndf) ですがデータベース内のページの構成に違いがあります。
– プライマリデータファイル –
ページ番号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
種別 | File Header Page |
PFS | GAM | SGAM | DCM | BCM | Boot Page |
|||
ページタイプ | 15 | 11 | 8 | 9 | 16 | 17 | 13 |
– セカンダリデータファイル –
ページ番号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
種別 | File Header Page |
PFS | GAM | SGAM | DCM | BCM | ||
ページタイプ | 15 | 11 | 8 | 9 | 16 | 17 |
プライマリデータファイルとセカンダリデータファイルのデータベース内のページ配置ですが、ほぼ似たような作りになっているのですが Boot Page の存在有無がことなっています。
セカンダリデータファイルのページ番号9 には Boot Page ではなく、PFS が格納されているようです。
Boot Page はプライマリデータファイルにのみ情報が格納されていますので、このファイルが破損してしまうとデータベースが起動できないということですね。
拡張子 .mdf はデータを格納するだけでなくデータベースを起動するためにとても重要な位置づけとなっています。
次の投稿で、データベースをいじりながらプライマリデータファイルの重要性を確認していきたいと思います。
SQL Server のデータベースの構成について改めて勉強 その 1 ≪ SE の雑記…
素敵なエントリーの登録ありがとうございます – .NET Clipsからのトラックバック…
.NET Clips
16 10月 11 at 15:23