猫型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

mysqldumpでテーブル毎のダンプを圧縮して取得するスクリプト

mysqldumpではデータベースを指定して一括してダンプを取得できます。テーブル毎のダンプも取得できます。 しかし、一括して取得したダンプの1つのテーブルだけをインポートすることはできません。これは …

mysql

MySQLの連続INSERTを高速にする

もししらなければ確実に、そして恐ろしく効果を発揮できると思います。 INSERTを連続実行する際にボトルネックとなるのはコミットです。 オートコミットをオフにするという手もあるのですが、 INSERT …

mysql

MySQL ERROR: Can’t connect to MySQL server on ‘xxx.xxx.x.xx’ (13)

MySQL ERROR: Can’t connect to MySQL server on ‘xxx.xxx.xxx.xxx’ (13) はSELinuxによる接続 …

mysql

MySQLでフラグの列でSELECTする。(複合インデックスの使用条件)

status=’1’とかdelete=’0’といった条件はよく使用することでしょう。 そこでフラグにはどのデータ型がベストなのでしょうか。 INDEX1 …

sqlserver

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

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