Shoeisha Technology Media

EnterpriseZine(エンタープライズジン)

EnterpriseZine(エンタープライズジン)

テーマ別に探す

Indirect Checkpoint (後編)

edited by DB Online   2012/02/15 00:00

こんにちは。日本マイクロソフトPremier Field Engineering部の古賀です。前回に引き続き、今回もIndirect Checkpointについて紹介していきます。

1. Indirect Checkpointの設定方法

 Indirect Checkpointは、データベース単位に設定できるオプションです。SQL Server 2012では、データベースのオプションに復旧時間を指定できるTARGET_RECOVERY_TIMEというオプションが追加されており、Indirect Checkpointを有効にするには、ALTER DATABASEステートメントで、このTARGET_RECOVERY_TIMEの値を0より大きい値に設定します。既定ではこの値は0となっており、従来と変わらないチェックポイント動作を行います。

 以下は、MyDBデータベースのTARGET_RECOVERY_TIMEを90秒に設定するときのコマンド例です。

ALTER DATABASE MyDB SET TARGET_RECOVERY_TIME = 90 SECONDS;

これで、Indirect Checkpointは有効になります。Indirect Checkpointが有効になると、Indirect Checkpoint用のスレッド、Background Writerが、指定された復旧時間内に復旧できるかどうかを定期的にチェックしてI/Oを発行してくれるようになります。

2. Indirect Checkpointの動作の監視方法

Indirect Checkpointの設定を有効にしたら、本当に機能しているのか確認したくなりますよね。SQL Server 2012では、Indirect Checkpointの動作の監視するために、パフォーマンスカウンタのSQL Server:Buffer Manager\Background Writer Pages/Secが追加されました。このカウンタは、Background Writerが一秒間に書き込んだページ数を表しますので、Indirect Checkpointが有効になっているかどうかはこのカウンタを監視することで確認できます。

また、トレースフラグ3441を有効にすることで、Indirect Checkpointに関連するアクティビティをエラーログに出力できるようになります。以下は、トレースフラグ3441を有効にして、Indirect Checkpointが発生したときのログ出力例です。

-- トレースフラグ3441を有効にする
DBCC TRACEON(3441,-1)

-- トレースフラグ3441を無効にする
DBCC TRACEOFF(3441,-1)

エラーログ出力例
…
2012-01-22 21:38:22.38 spid52      DBCC TRACEON 3441, server process ID (SPID) 52. This
 is an informational message only; no user action is required.
2012-01-22 21:38:48.13 spid14s     Ckpt dbid 6 started 
2012-01-22 21:38:48.14 spid14s     Ckpt dbid 6 complete
…

 このトレースフラグは、現在の最新リリース版(SQL Server 2012 RC0の段階)で有効なことを確認していますが、今後のリリースでは出力される内容などが変わってくるかもしれませんのでご了承ください。


著者プロフィール

バックナンバー

連載:あたらしいSQL Server/Denaliの世界

もっと読む

All contents copyright © 2007-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5