Data Management


Saved Data

保存されたデータはページとよばる 8 KB の連続したディスク領域に格納されます。行は複数のページにまたがることはできません。一行の最大データ要領は 8060 バイトです。一行にこれ以上のデータ保存が必要な場合は、データベースの設計に問題があります。また、Text 型や Binary 型は実データが格納されているディスク上のアドレスポインタのみを保存するので問題ありません。

テーブルやインデックスなどはエクステントに格納されます。エクステントは 8 つの連続したページです。

エクステント(64KB)= 8 つの連続した 8KB のページ。

ページ(8KB) ページ(8KB) ページ(8KB) ページ(8KB) ページ(8KB) ページ(8KB) ページ(8KB) ページ(8KB)

 

Transaction

トランザクションとは一つ以上の SQL ステートメントの集まりで、論理的な作業単位です。トランザクションは、すべてを実行するか、まったく実行しないかのいずれかです。

SQL Server では、明示的に記述しない場合、UPDATE、INSERT、DELETE などの一文が一つのトランザクションとしてみなされます。明示的に指定するときは、以下のように BEGIN ステートメントではじめ、COMMIT または ROLLBACK で終了させます。

ex)
BEGIN TRAN
    UPDATE ・・・
    INSERT ・・・
COMMIT TRAN

トランザクションログは、実行したトランザクションをシーケンシャル(順次書き込み)で保存しています。したがって、ディスクへのアクセスは高速です。

データがディスクに反映されるまで・・・

  1. データベースが参照(SELECT・UPDATE・INSERT・DELETE など)されたら、ディスクからメモリ上へ格納します。
  2. 変更要求(UPDATE・INSERT・DELETE など)が来たら、ディスクへは書き込まず、メモリ上に変更が保持されます。
  3. 2 と同時に、トランザクションログ(ディスク)に書き込みます。
  4. チェックポイントが来たら、メモリ上のデータをディスクに書き込みます。

システムに障害が起こると、自動復旧プロセスがトランザクションログを使用して、すべてのコミット済みトランザクションをロールフォワードし、ディスクへ書き込みます。

チェックポイント

チェックポイントはメモリ上のデータをディスクに書き込むタイミングのことです。この感覚は SQL Server が管理しています。ただし、定期的な時間ではありません。トランザクションに蓄えたれた情報量によって決まります。障害がおきたときに復旧時間が運用に影響を与えない程度のデータ量がたまったらディスクに書き込みます。

 

Database File

model.mdf

新規にデータベースを作成すると model データベースがコピーされます。

プライマリファイル - *.mdf

作成したデータベースを格納するためのファイルです。ファイル名とパスは自由に変更できます。一つ以上必要です。作成時にあらかじめ使用するサイズを予約(ディスク上に確保)します。

データが予約したサイズになったら、自動的に拡張するか、拡張しないかを設定でき、その際の拡張サイズを指定できます。

セカンダリファイル - *.ndf

複数のファイルにデータ分散するときに使用します。

トランザクションログファイル - *.ldf

トランザクションログを格納するファイルです。一つ以上必要です。

データベースに格納されている情報

master

msdb

ユーザーが作成したデータベース