猫型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の実行速度テスト用PHP

1.testデータベースにtest_tableテーブルを作成。 2.1万件のデータを登録します。 3.1000件のフラグを更新 4.更新したデータを検索する時刻を測定して表示 するサンプルです。 &l …

mysql

MySQLの時間のフォーマット

MySQLのdatetime型はそのままSELECTすると、 2013-05-15 13:45:59 のように表示されてしまいます。 yyyy-mm-ddではなく、yyyy/mm/dd がいい場合もあ …

mysql

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

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

sqlserver

SQL Server 構成マネージャーを起動する

SQL Server 構成マネージャーがない。 何故か、コンピューターの管理の中に入っていた。 また検索窓からは以下のように検索できる。 ・SQL Server 2014 の場合   SQLServe …

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による接続 …