ヘッダーをスキップ
Oracle TimesTen In-Memory Databaseオペレーション・ガイド
リリース6.0
B25767-03
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

チェックポイント

チェックポイントとは、データ・ストアの状態をディスク・ファイル(チェックポイント・ファイル)に保存する処理のことです。デフォルトでは、TimesTenはバックグラウンドのチェックポイント処理を一定間隔で実行します。かわりに、アプリケーションでプログラムによってチェックポイント処理を開始することもできます。詳細は、「チェックポイントの設定および管理」を参照してください。

TimesTenでは、データ・ストアごとにdsname.ds0およびdsname.ds1の2つのチェックポイント・ファイルがあります。ここで、dsnameは、データ・ストアのDSNで指定されるデータ・ストア・パス名です。チェックポイント処理では、前回のチェックポイントが書き込まれたチェックポイント・ファイルが識別され、他方のチェックポイント・ファイルにチェックポイントが書き込まれます。したがって、これらの2つのファイルには、常に最新のデータ・ストア・イメージおよびその1つ前のデータ・ストア・イメージのいずれかが含まれていることになります。

データ・ストアがシャットダウンするか、またはシステム障害が発生した後で行われるデータ・ストアのリカバリでは、これらのファイルを使用して、トランザクションに一貫性がある最新のデータ・ストア状態がリカバリされます。このリカバリでは、2つのチェックポイント・イメージの中で新しい方のイメージが含まれているファイルが識別され、そのファイルのデータ・ストア・イメージにログが適切に適用されて、最新のデータ・ストアの状態がリカバリされます。この処理中にエラーが発生した場合、または新しい方のチェックポイント・イメージが不完全な場合(チェックポイントの書込み開始時にシステム障害が発生した場合など)は、もう一方のチェックポイント・ファイルを使用してリカバリが再度開始されます。

また、TimesTenでは、データ・ストアごとにdsName.res0ファイルおよびdsName.res1ファイルも作成されます。これらのファイルは、ログの作成時にTimesTenによって内部的に使用されます。

チェックポイント処理には、2つの主な目的があります。その1つは、リカバリの開始時により新しいデータ・ストア・イメージを提供して、データ・ストアのリカバリに必要な時間を短縮することです。もう1つは、ログの一部を将来のデータ・ストアのリカバリ処理で不要にすることです(通常は、これで1つ以上のログ・ファイルを削除できます)。これらの2つの機能は、TimesTenアプリケーションにとって非常に重要です。リカバリ時間の短縮は、データ・ストアのリカバリに必要なログの量が、システム障害の発生後にアプリケーションで発生するダウンタイムに直接影響するため重要になります。不要なログ・ファイルの削除は、新しいログ・ファイルで使用可能なディスク領域を解放できるため重要になります。これらのファイルが削除されない場合、最終的に、ログ・ディレクトリのファイル・システムで使用可能なすべての領域がすべてこれらのファイルによって消費され、データ・ストア処理が、ログ領域不足のため失敗することになります。

これらの理由から、TimesTenアプリケーションでデータ・ストアを定期的にチェックポイント処理するか、またはユーザーがデータ・ストアの初期接続属性CkptFrequencyおよびCkptLogVolume(あるいはその両方)を設定して、チェックポイント処理がバックグラウンドで実行される頻度を決定する必要があります。

チェックポイント処理の実行時、データ・ストアのサイズおよび最新のチェックポイント以降に行われたデータ・ストアへの変更の回数に応じて、大量のI/Oアクティビティが発生し、実行時間が長くなる場合があります。

チェックポイントのタイプ

TimesTenでは、次の2つのタイプのデータ・ストア・チェックポイントがサポートされています。

トランザクション一貫性チェックポイント

トランザクション一貫性チェックポイント(ブロッキング・チェックポイントとも呼ばれる)では、チェックポイント処理の一部でデータ・ストアに排他ロックが設定され、その間はデータ・ストアへのアクセスがブロックされます。その結果、得られるチェックポイント・イメージには、チェックポイント処理でロックを設定する前にコミットされたすべてのトランザクションの結果が反映されます。データ・ストア・ロックが保持されている間はアクティブなトランザクションが許容されないため、実行中のトランザクションで行われた変更はチェックポイント・イメージに含まれません。

トランザクション一貫性チェックポイントは、3種類のロギング・モード(ディスク・ロギング、ディスクレス・ロギングおよびロギングなし)のいずれのモードでも使用できます。ディスク・ロギングが有効な場合は、リカバリ時にログが使用され、チェックポイント処理の終了後に永続コミットされたトランザクションの結果が再度適用されます。トランザクション一貫性チェックポイントをリクエストするには、アプリケーションでttCkptBlocking組込みプロシージャを使用します。実際のチェックポイント処理は、リクエストを行ったトランザクションがコミットまたはロールバックされてから実行されます。両方のチェックポイント・ファイルがすでに最新となっているデータ・ストアに対してトランザクション一貫性チェックポイントをリクエストすると、そのリクエストは無視されます。

ファジー・チェックポイント(非ブロッキング・チェックポイント)

ファジー・チェックポイント(非ブロッキング・チェックポイント)では、チェックポイント処理の実行中にデータ・ストアに対してトランザクションを実行できます。ファジー・チェックポイントでは、ロックは設定されません。このため、他のデータ・ストア・アクティビティへの影響は最小限になります。これらの他のデータ・ストア・アクティビティは、チェックポイント・ファイルに書込み中のデータ・ストアも変更できるため、作成されるチェックポイント・イメージには、チェックポイント処理の実行中にアクティブだったトランザクションの結果が含まれる場合があります。また、チェックポイント・イメージの全体に、同一時点の状態が反映されているとはかぎりません。たとえば、ある部分は、あるトランザクションのコミット前に書き込まれ、別の部分は、コミット後に書き込まれる場合があります。ファジー・チェックポイントという用語は、データ・ストア・イメージの状態がファジー(あいまい)であることから名付けられています。TimesTenのバックグラウンドのチェックポイントは、常に非ブロッキングです。

ファジー・チェックポイントからのリカバリでは、TimesTenは、ログを使用してチェックポイントの様々な部分を互いに一貫性がある状態にし、チェックポイント処理の終了後に永続コミットされたトランザクションの結果を再度適用します。このため、ファジー・チェックポイントは、ディスク・ロギングが有効になっている場合にのみ使用できます。ファジー・チェックポイントをリクエストするには、アプリケーションでttCkpt組込みプロシージャを使用します。ディスク・ロギングが有効になっている場合は、このプロシージャによってファジー・チェックポイントが発行されます。ディスクレス・ロギングが有効になっている場合またはロギングが無効になっている場合は、ブロッキング・チェックポイント(トランザクション一貫性チェックポイント)がリクエストされます。すべてのブロッキング・チェックポイントの場合と同様に、実際のチェックポイント処理は、リクエストを行ったトランザクションがコミットまたはロールバックされてから実行されます。

チェックポイントの設定および管理

デフォルトでは、Logging=1の場合、TimesTenは非ブロッキング・チェックポイントをバックグラウンドで実行します。この場合のバックグラウンドのチェックポイント処理は、非ブロッキングです(「ファジー・チェックポイント(非ブロッキング・チェックポイント)」を参照してください)。

一部のデータ・ストア属性および組込みプロシージャをチェックポイントの設定、管理および監視に使用できます。これらには、次のものがあります。

バックグラウンドのチェックポイント処理のチェックポイント処理速度の設定

デフォルトでは、チェックポイントがディスクに書き込まれる速度に制限はありません。速度を制御する場合は、CkptRate属性またはttCkptConfig組込みプロシージャを使用して、バックグラウンドでチェックポイントがディスクに書き込まれる最大速度を設定できます。速度は、MB/秒で表されます。リカバリ時に行われるチェックポイント処理および最後のチェックポイント処理ではこの速度は保持されません。この場合の速度に制限はありません。

これらの機能の詳細は、『Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド』を参照してください。

速度を低く設定しすぎると、チェックポイント処理に過度の時間がかかり、次の問題が発生する場合があります。