猫型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のエラー、クエリ、スロークエリのログ

全て /etc/my.cnf の [mysqld] に追記してサーバーを再起動すれば出力されるようになります。 エラーログは開発時には警告も出力しておけばよいでしょう。 クエリログは全てのSELECT …

mysql

MySQLの時間の計算・比較

列同士を比較する datetime型をそのままプラス・マイナスしてはいけません!! 例えば、 mysql> select * from test; +———————+ …

mysql

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

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

sqlserver

SQLSERVER「Login failed for user ‘xxxxxxx’. 理由: 指定された名前に一致するログインが見つかりませんでした」

Windows認証でAdministratorを指定しているのにログインできない。 そんな場合は以下の手順でAdministratorユーザーを作成します。 INDEX1 起動時のパラメーターの変更2 …

mysql

MySQLのバイナリログを見てスレーブ停止の原因を調査する

以前スレーブ側の更新がとまっていることに気付きました :x001: その時のトラブルシューティングの手順です。 INDEX1 1.スレーブ側で、SlaveS tatusを確認する2 2.スレーブ側のロ …