猫型iPS細胞研究所

Windows、Linux、iOS、DB、Network

DataBase SQLServer

SQLSERVERのトランザクションログの切り捨て・圧縮

投稿日:

トランザクションログはデータの登録・更新記録です。

復旧モデル

トランザクションログを扱うには、トランザクションログがどのように使用されるかを知る必要があります。
そのためには、
データベースを右クリック>プロパティ>オプションの復旧モデルを確認します。

切り捨て

復旧モデルが完全、一括の場合は、全てのデータを記録していくのでドンドントランザクションログは大きくなります。
しかしバックアップが取られるとログは消えます。注意が必要なのは、ログは消えてもトランザクションログのファイルサイズは変わらないことです。
一旦大きくなったファイルは圧縮しないと小さくなりません。
小さくしても、ファイルサイズが不足してくればおおきくなります。
それが完全、一括です。
(一括ログ復旧モデルは、大量のデータの一括インポートなど、特定の大規模な一括操作のパフォーマンスを向上するために、間欠的にのみ使用する特別な用途の復旧モデルです。)

一方単純はトランザクションログのファイルサイズが増えません。
つまり、トランザクション(=ロールバック)の保障がないということです。
必要な領域を確保すれば、その範囲で使いまわしをします。

トランザクションログがたまってくると、切り捨てが必要な場合があります。


完全復旧モデルまたは一括ログ復旧モデルでは、ログの非アクティブな部分は、そのすべてのログ レコードがログ バックアップでキャプチャされるまで切り捨てることができません。この処理は、”ログ チェーン” を保持するために必要です。ログ チェーンとは、連続したログ シーケンス番号 (LSN) が指定された一連のログ レコードです。以下の条件を満たしていれば、ログはトランザクション ログのバックアップ時に切り捨てられます。

意味はよくわかりませんが、たまってしまった場合です。不幸にもたまったかどうかは、エラーログにもでますし、以下のコマンドでも確認できます。

DBCC SQLPERF(‘DATABASENAME’)

切り捨てが必要になるのは、完全、一括ログモデルです。切り捨てるには、バックアップを行うか、復旧モデルを単純に切り替えます。
単純に切り替えるには以下のコマンドです。

ALTER DATABASE [DATABASE] SET RECOVERY SIMPLE

圧縮

一度大きくなったトランザクションログ・ファイルのサイズは変わりません。
ここが難点です。
ファイルは大きくなるのに小さくならないのです。

トランザクションログを圧縮するには以下の手順です。
データベースを右クリック>タスク>圧縮>ファイル

ファイルの種類にはログを選択します。
圧縮アクションには”未使用領域の解放前にページを再構成する”を選び、トランザクションログファイルのサイズを指定します。
sqlserver_compress

これでログファイルは小さくなりましたが、復旧モデルは単純となっていることに注意してください。

Gooleアドセンス用336

Gooleアドセンス用336

-DataBase, SQLServer
-

執筆者:

関連記事

mysql

MySQLのmysqldumpのエクスポートとインポート

ダンプはバックアップやテストに大活躍してくれます。 しかし、データベース単位でエクスポートしても、インポートには随分時間がかかったりします。 その辺は別の機会にしますが、今回は基本コマンドのまとめです …

mysql

MySQLの文字コードを変更する

日本語を扱うにはutf8にするべきでしょう。 アプリケーション側で接続する際に文字コードを指定することもできます。 string constr = “userid=root;password=pass …

sqlserver

SQLSERVER saでログインできるようにする

私はsaも設定しておくべきだと思います。 そこでsaログインするための確認ポイントです。 INDEX1 ログインを有効にする2 サーバー認証の設定3 名前付きパイプ ログインを有効にする Manage …

sqlserver

SQL Server Browser を起動する方法

SQL Server構成マネージャーより起動できるはずが、なぜか開始も停止もできない。 コントロール パネル > システムとセキュリティ > 管理ツール > サービス を見ると、SQL Server …

mysql

MySQLのwait_timeout

データベースやWebサーバーは、実際に稼働してから問題が多発します。 データ量が増えてきたり、アクセスが増えてきたらまずレスポンスの問題が発生するでしょう。 経験のあるエンジニアがいれば、十分なテスト …