1分で分かる「トランザクションログ」の仕組み:SQL Serverトラブルシューティング(24)
本連載は、「Microsoft SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は、データベース管理システムの重要機能であり、それだけにトラブル事例も多い「トランザクションログの仕組み」をおさらいします。
本連載では、「Microsoft SQL Server(以下、SQL Server)」で発生するトラブルについて、「なぜ起こったか」の理由とともに具体的な対処方法を紹介していきます。
「トランザクションログ」をおさらい
トランザクションログは、SQL Server(などのリレーショナルデータベース管理システム)が稼働中に行ったデータベースごとに発生したトランザクションと、加えられた変更が全て記録される重要なログファイルです。ロールバック処理や障害発生時にバックアップからのリストアを行う際に利用され、データの一貫性を保つために利用されます。
SQL Serverでは、全ての復旧モデルでトランザクションログに変更履歴を記録します。実はこちら、皆さんがよく勘違いをしてしまうところのようです。
完全復旧モデルや一括ログ復旧モデルならば、トランザクションログが必須なのはご存じと思います。しかし、単純復旧モデルもトランザクションログに履歴を記録します。単純復旧モデルであっても、トランザクションが中断された場合やROLLBACK指令があった場合はロールバック処理が必要であり、途中まで記録した内容を参照する必要があるからです。単純復旧モデルでは、トランザクションログのバックアップまでは必要ありませんが、トランザクションログそのものは必要なのです。
仮想ログファイルごとに、使用中/再利用可能/未使用の3つのステータスがある
トランザクションログは少なくとも1つのファイルで構成され、循環利用されます。複数のファイルで構成されている場合でも、1ファイルずつ利用します。同時に2つ以上使うことはありません。ファイルの拡張子は一般的に、「.ldf」となります。
トランザクションログの内部は、仮想ログファイルと呼ばれる複数のセグメントで構成され、サイズはSQL Serverが内部で自動管理します。また、仮想ログファイルごとに、使用中/再利用可能/未使用の3つのステータスがあります。
変更履歴の記録時に、仮想ログのステータスが「全て使用中」になっていたら、ログファイルを拡張して空き領域を確保してから記録します。使用中のステータスを「再利用可能」に変えるには、トランザクションログの「切り捨て」処理が必要となります。
単純復旧モデルの場合は、切り捨て処理をトランザクションが終了した時点で自動的に実行します。一方の完全復旧モデルや一括ログ復旧モデルでは、トランザクションログのバックアップを実行することで切り捨て処理が行われます。
トランザクションログファイルはデータベース管理システムの重要機能に関連しています。それだけに、ここにトラブルが発生するとサービスが全て動作停止状態となるほどの危機的な状況に陥ることもあります。次回から数回にわたって、トランザクションログに関連する具体的なトラブル例と解決方法を紹介します。
筆者紹介
内ヶ島 暢之(うちがしま のぶゆき)
ユニアデックス株式会社所属。Microsoft MVP Data Platform(2011〜 )。OracleやSQL Serverなど商用データベースの重大障害や大型案件の設計構築、プリセールス、社内外の教育、新技術評価を行っていた。2016年4月よりIoTビジネス開発の担当となり、新しい仕事に奮闘中。ストレッチをして柔らかい身体を手に入れるのが当面の目標。
椎名 武史(しいな たけし)
ユニアデックス株式会社所属。入社以来 SQL Serverの評価/設計/構築/教育などに携わりながらも、主にサポート業務に従事。SQL Serverのトラブル対応で社長賞の表彰を受けた経験も持つ。休日は学生時代の仲間と市民駅伝に参加し、銭湯で汗を流してから飲み会へと流れる。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 「SQL Server 2016」に搭載される新たなセキュリティ対策を追う
パブリックプレビューが公開されているマイクロソフトのRDB次期版「SQL Server 2016」。特徴の1つとするセキュリティ対策機能のポイントと目指すところをキーパーソンに聞いた。 - そもそも、リレーショナルデータベースとは何か?
データベースを基礎から勉強し理解を深めていくことは簡単なことではありません。本連載では、データベースに対するハードルを少しでも低くするために、初心者の方に必要なデータベースの基本から、障害対策やチューニングといった実践に即した内容までを幅広く解説していきます。今回は、データベースの役割と、それを管理するソフトウェアであるDBMSの基本機能について解説します。【更新】 - データの登録を行うINSERT文
- 複数の条件を指定してSELECT文を実行する
前回は、SELECT文の初歩の初歩を解説しました。今回は、複数の条件を指定して、目的のデータを取り出す方法を解説します(編集部) - Oracle運用の基本「ログ」を理解しよう
本連載では、Oracle Database運用の鍵となるトラブル対処法について紹介していきます。第1回、第2回では情報収集の要となるログについて見ていきます。ログの出力情報は10gと11gとでは大きく異なる点がありますので、それぞれについても確認しておきましょう。