トップページへ PASSJ ブログへ
トップページへ
分科会
特集!
コミュニケーション
資格
セミナー・コンファレンス
インフォメーション



ビギナーボードリーダー:堀川 明

毎月第2、第4木曜日はボードリーダーからのレポートを掲載いたします。
 
   

 2003年4月24日

『トランザクションログファイルとは?』


 Access のデータベースシステム( MDB ファイル)は、個人向けデータベー スとして誰でも簡単に使えることを目標に開発されたものです。
 このためデータベースの信頼性を多少犠牲にしてでも、使い勝手が優先され ました。ですから Access の MDB データベースでは、トランザクションログ 管理機能が存在しません。

 一方、MSDE データベースエンジンは、SQL Server と互換性があるため、ト ランザクションログ管理機能を有効に働かせることができます(データベース の初期状態は、ログの切捨て運用になっていますので注意が必要です)。

 Access 技術者が MSDE に移行して、最初に途惑うのがこのトランザクショ ンログファイルの存在だと思います。Access には存在しなかった機能ですか ら理解できないのも無理はありません。

 トランザクションログ機能を簡単に説明すると、データベースのデータなど を更新したり削除したりした命令を時系列に逐次記録したものだと言えます。

 例えば、
午前 10 時 10 分に、UPDATE 〜という更新命令を実行しました
午前 10 時 20 分に、DELETE 〜という削除命令を実行しました
午前 10 時 30 分に、INSERT 〜という挿入命令を実行しました
このように、データベースのデータを変更した命令を覚えます。

 一方のデータファイルの方は、現在の最新の状態のデータを覚えていると考 えて差し支えありません。

 なぜ、信頼性の高いデータベースシステムではトランザクションログ管理機 能が必要なのでしょうか?

 それはデータベースのデータファイルが壊れてデータベースを復元するとき に、トランザクションログが必要になるからです。

 例えば、上の例で、午前 10 時 40 分に、データベースのデータが壊れたと します。また午前 10 時にデータベースのバックアップを取っているとします。

 Access の MDBデータベースでは、バックアップを実行した時点のファイル へ戻すことしかできません。ですから、午前 10 時のデータベースを復元して、 10 分の UPDATE命令、20 分の DELETE 命令、30 分の INSERT命令によって変 更を受けたデータは復元することはできません。データが損失したわけです。 どのような命令を実行したのかを、Access ユーザは覚えているでしょうか?
その記録をトランザクションログがやってくれます。

 SQL Server では、トランザクションログファイルが損傷を受けていなけれ ば、確実にデータベースを復元することができます。
 午前 10 時のデータベースを復元した後の手順が、Access の MDB データベ ースとは異なります。復元した後、トランザクションログファイルの中を調べ て、10 分の UPDATE 命令を先ほど復元したデータベースに実行します。20 分 の DELETE 命令も同じように実行します。
 トランザクションログファイルの中に、データ変更の原因となった SQL 文 が入っていると考えれば、その SQL 文を次々に自動実行して、データベース が壊れる直前の状態に復旧させることができることがわかると思います。

 このように、信頼性の高いデータベースサーバーでは、トランザクションロ グ管理機能が絶対に必要になります。

 ところがその代償として、トランザクションログファイルが、どんどん大き くなります。
 データを変更した命令をどんどん記録保存するわけですから。

 放っておくと、ディスクがパンクします。一杯になる前にメンテナンスが必 要です。

 このメンテナンスについては次回にお話しましょう。




ボードリーダーレポート トップページへ

 

 
PASSJメールニュース 著作権ついて プライバシーポリシー リンクポリシー お問い合わせ
(C) 2005 Professional Association for SQL Server Japan. All rights reserved.