SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Server のデータベースの構成について改めて勉強 その 1

one comment

最近、基本的なことがちょくちょく分からなくなるので、基本的な内容について改めて勉強しています。

これから、SQL Server のデータベースの基本的な内容について数回に分けてまとめていきたいと思います。

基本大事!!

■データベースの最小構成


SQL Server のデータベースですが以下の要素で構成されます。

  • ファイルグループ
  • データファイル
  • ログファイル

最小のデータベース構成は以下になります。

image

データベースには必ず PRIMARY というプライマリファイルグループとそのファイルグループ内に関連付けられた .mdf の拡張子を持つデータファイル (プライマリデータファイル)、ldf の拡張子を持つログファイルで構成がされます。

 

■プライマリファイルグループってなにもの


データベースには必ずプライマリファイルグループが存在します。

このファイルグループについては Books Online (BOL) に以下のように記載されています。

ファイルおよびファイル グループについて

プライマリ ファイルが含まれているファイル グループ。すべてのシステム テーブルがプライマリ ファイル グループに割り当てられます。

 

ファイルグループはデータファイルを束ねるための論理的な空間になります。
# OS 上にファイルとしては存在せず、SQL Server のデータベース内に論理的な情報として値が保持されます。

プライマリファイルグループはプライマリファイル (.mdf) を所属させるための論理的な空間ということになります。

 

■プライマリデータファイルってなにもの


プライマリファイルグループはプライマリファイルを所属させるための論理的な空間ということを書きました。
次は、このプライマリファイルグループについて調べていきたいと思います。

先ほどと同じ情報内に、プライマリファイルについての説明があります。

プライマリ データ ファイルにはデータベースの起動情報が含まれており、データベース内の他のファイルを指し示します。ユーザー データおよびオブジェクトは、このファイルまたはセカンダリ データ ファイルに格納できます。各データベースには 1 つのプライマリ データ ファイルがあります。プライマリ データ ファイルに推奨されるファイル名拡張子は .mdf です。

プライマリファイルはデータベースに起動に必要な情報や、ほかのファイルへの参照情報が含まれていると記載されていますね。
先ほどのファイルグループには、システムテーブルがプライマリファイルに含まれると書かれています。

他のファイルへの参照情報に関してはシステムテーブルに含まれる情報になると思うのですが以下のような情報がプライマリデータファイルに格納されているということですね。

image

 

データベースの起動情報というものに関してはブートページ (Pagetype=13) というページに書かれている情報が該当すると思います。

SQL Server では複数のデータファイルを持つことが可能です。
image

二つ目以降のデータファイルは拡張子が .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 はデータを格納するだけでなくデータベースを起動するためにとても重要な位置づけとなっています。

次の投稿で、データベースをいじりながらプライマリデータファイルの重要性を確認していきたいと思います。

Share

Written by Masayuki.Ozawa

10月 14th, 2011 at 8:29 am

Posted in SQL Server

Tagged with

One Response to 'SQL Server のデータベースの構成について改めて勉強 その 1'

Subscribe to comments with RSS or TrackBack to 'SQL Server のデータベースの構成について改めて勉強 その 1'.

  1. SQL Server のデータベースの構成について改めて勉強 その 1 ≪ SE の雑記…

    素敵なエントリーの登録ありがとうございます – .NET Clipsからのトラックバック…

    .NET Clips

    16 10月 11 at 15:23

Leave a Reply