Indirect Checkpoint (後編)

EnterpriseZine / 2012年2月15日 0時0分

こんにちは。日本マイクロソフト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が発生したときのログ出力例です。

  • 前のページ
    • 1
    • 2
  • 次のページ
EnterpriseZine

トピックスRSS

ランキング