CHECKPOINT (Transact-SQL)
現在のデータベースのすべてのダーティ ページをディスクに書き込みます。ダーティ ページとは、バッファ キャッシュに入力されたり変更されたりしても、ディスクに書き込まれていないデータ ページのことです。チェックポイントは、すべてのダーティ ページがディスクに書き込まれたことを確認するために作成されるポイントで、その後の復旧の時間を短縮します。
構文
CHECKPOINT [ checkpoint_duration ]
引数
checkpoint_duration
チェックポイントを完了するのに必要な時間を秒単位で指定します。checkpoint_duration を指定すると、Microsoft SQL Server 2005 は、要求された時間内にチェックポイントを実行しようとします。checkpoint_duration は、データ型が int の式で、0 より大きい値にする必要があります。このパラメータを省略すると、SQL Server 2005 では、データベース アプリケーションのパフォーマンスに与える影響が最小限になるように、チェックポイントの持続時間が自動的に調整されます。
メモ : |
---|
SQL Server 2000 では、チェックポイント処理の時間枠は sp_configure RECOVERY INTERVAL 設定を基に設定されました。 |
解説
パフォーマンス向上のため、データベース エンジン では、メモリにあるデータベース ページが変更されるようになり、ページが変更されるたびにディスクに書き込まれることはなくなりました。ただし、データベース エンジン では、チェックポイントを実行してこれらのダーティ ページをディスクに書き込む必要があります。ダーティ ページをディスクに書き込むことによって、予期しないシャットダウンやクラッシュの後の復旧中に、ログに格納されている変更をデータベース エンジン が適用するための最適なポイントを取得することができます。詳細については、「チェックポイントとログのアクティブな部分」を参照してください。
チェックポイントは、データベースの数にかかわらず同時に実行できます。
データベース エンジン では、中断されたチェックポイントからの復旧はできません。チェックポイントが中断されていて、復旧が必要な場合は、データベース エンジン は前回の成功したチェックポイントから復旧を開始する必要があります。
チェックポイントが実行されるイベント
データベース エンジン は、データベース バックアップの前に、自動的にチェックポイントを実行します。これによって、データベース ページのすべての変更がバックアップに取り込まれます。さらに、次のいずれかの状態になった場合、チェックポイントは自動的に実行されます。
- ログのアクティブ部分が、recoveryinterval サーバー構成オプションの指定時間内にサーバーが復旧できるサイズを超えている。
- ログが全体の 70% まで達しており、データベースがログ切り捨てモードになった場合。
データベースがログ切り捨てモードになるのは、次の 2 つの条件が TRUE である場合です。1 つは、データベースが単純復旧モデルを使用している場合、もう 1 つは、前回データベースを参照した BACKUP DATABASE ステートメントの実行後に、次のいずれかのイベントが発生した場合です。- データベースで最小限のログ操作が実行された。たとえば、最小限のログの一括コピー操作や、最小限のログの WRITETEXT ステートメントが実行された場合など。
- データベースにファイルを追加または削除する ALTER DATABASE ステートメントが実行された。
- データベースを参照する BACKUP LOG ステートメントが、NO_LOG 句または TRUNCATE_ONLY 句のいずれかを指定して実行された。
また、サーバーが停止しても、サーバーにあるデータベースごとにチェックポイントが実行されます。次の方法で SQL Server を停止させると、データベースごとにチェックポイントが実行されます。
- SQL Server 構成マネージャを使用する。
- SQL Server Management Studio を使用する。
- SHUTDOWN ステートメントを使用する。
メモ : |
---|
SHUTDOWN WITH NOWAIT ステートメントを実行すると、各データベース内でチェックポイントが実行されずに SQL Server がシャットダウンします。この場合、次に再起動するときに、サーバー上のデータベースを復旧するのにいつもより長い時間がかかる可能性があります。 |
- コマンドプロンプト ウィンドウで、net stop mssqlserver コマンドを使用する。
- [コントロール パネル] の [サービス] で、[mssqlserver] を選択し [停止] をクリックする。
チェックポイントの操作時間に影響を与える要因
通常、書き込む必要のあるダーティ ページの数が増えると、チェックポイント操作に必要とされる時間が長くなります。他のアプリケーションのパフォーマンスに与える影響を最小にするには、既定では、SQL Server 2005 によってチェックポイント操作による書き込み頻度が調節されます。SQL Server では、この方法に基づいて、自動チェックポイントと、checkpoint_duration 値を指定しない CHECKPOINT ステートメントが実行されます。書き込みの頻度が減ると、チェックポイント操作の完了に必要な時間は長くなります。
checkpoint_duration を使用すると、特定の時間内にチェックポイント操作を完了するように要求できます。checkpoint_duration の使用によるパフォーマンスへの影響は、ダーティ ページの数、システムにあるアクティビティ、実際に指定された時間によって異なります。たとえば、通常、チェックポイントが 120 秒で完了する場合、checkpoint_duration を 45 秒に設定すると、SQL Server によって、既定で割り当てられるリソースよりも多くのリソースがチェックポイントに割り当てられます。逆に、checkpoint_duration を 180 秒に指定すると、SQL Server では、既定で割り当てられるリソースよりも少ないリソースしか割り当てられません。一般に、checkpoint_duration が短いとチェックポイントに割り当てるリソースが増え、checkpoint_duration が長いとチェックポイントに割り当てるリソースが減ります。SQL Server は、常に可能な限りチェックポイントを完了し、チェックポイントが完了するとすぐに CHECKPOINT ステートメントによって値が返されます。したがってチェックポイントの完了は、状況に応じて、指定した時間よりも早まったり、遅くなることがあります。
権限
CHECKPOINT 権限は、既定では、sysadmin 固定サーバー ロール、db_owner 固定データベース ロール、および db_backupoperator 固定データベース ロールのメンバに与えられており、この権限は譲渡できません。
参照
関連項目
ALTER DATABASE (Transact-SQL)
SHUTDOWN (Transact-SQL)
その他の技術情報
チェックポイントとログのアクティブな部分
recovery interval オプション
データベース オプションの設定