トランザクションログの機能

ここでは、管理者と従業員の両方の観点による、トランザクションログの一般的な例を示します。

管理者は、サーバーのすべてのデータベースでトランザクションログを有効にします。管理者は、トランザクションログに十分な空き容量を確保できるように、アーカイブログ方式を選択します。さらに、トランザクションログを安全かつ迅速に保存するために、ミラーリングされた、独立した記憶装置を使用し、メディア不良とそれに伴うデータベース損傷を復旧するためにバックアップユーティリティをインストールします。

管理者は、トランザクションログを毎日バックアップします。この方法では、バックアップ時間が短くて済みます。サーバーのすべてのデータベースで完全バックアップを実行するのではなく、変更分だけをバックアップするからです。

サーバーがクラッシュするとサーバー機能は停止しますが、長い時間ではありません。管理者がサーバーを再起動すると、すべての変更がトランザクションログからデータベースに再実行されます。サーバーはすみやかに再開されます。

数日後、メディア不良が発生します。管理者は、破損したデータベースを最近の週次バックアップで復旧し、変更を再実行します。

データベースを使用している従業員は、何の違いも感じずに作業を続行します。ただし、サーバーが起動する頻度が増し、ダウン時間が減少していることに気が付く場合があります。

データベースの変更方法

トランザクションログでは、トランザクションがディスクへコミットされるのを待たずに、データベースのすべてのトランザクションがログファイルに書き込まれます。トランザクションがログファイルに書き込まれると、変更は成功したものと見なされます。物理的な書き込みプロセスは、サーバーがビジーでない状態になるまで待機するか、定期的な間隔で行うことができます。変更は、一括してディスクに書き込まれます。

データベースは開いている間、メモリ内でキャッシュされます。データベースへの書き込みは、データベースのメモリ内のコピーで行われます。これらの書き込みは、ただちにトランザクションログに送信されます。その後、データベースのキャッシュされたメモリのバージョンがディスクに書き込まれ、データベースが更新されます。トランザクションログは順次処理であるため、シーク時間はありません。必要なだけの情報がログに書き込まれ、操作が再実行されます (必要な場合は取り消されます)。多くの場合、トランザクションログの情報量は、データベースでディスクに書き込まれる情報量よりも少なくなります。

ディスクへの書き込みがまだ完了していないときにデータベースを開けると、キャッシュされたメモリのバージョンを開くことになります。ディスクのバージョンが変更で更新される前にサーバーがクラッシュした場合、サーバーを再起動すると、再起動時にログがデータベースに適用されます。