プロダクション・データのパージ
このページでは、プロダクション・データをパージする方法とその理由について説明します。
概要
指定されたネームスペースで実行されているプロダクションごとに、InterSystems IRIS はそのネームスペースのイベント・ログ、メッセージ・ウェアハウス、ビジネス・プロセス・ログ、ビジネス・ルール・ログ、および I/O アーカイブ・ログにエントリを書き込むことができます。エントリは時間の経過と共に蓄積され、ディスク容量を大量に消費する可能性があるため、InterSystems IRIS では、適切な特権を持つユーザは、古くなったエントリをパージできます ("管理ポータル機能へのアクセスの制御" を参照してください)。
これは、手動で実行できます。つまり、プロダクション・データは、臨機応変にパージできます。定期的なパージをスケジュールすることもできます。通常、開発およびテストに使用しているシステムでは手動パージを実行し、実働システムではスケジュールされたパージを設定します。
パージによってジャーナルが生成されます。大量のデータをパージすると、その結果生成されるジャーナルによって大量のディスク容量が消費されることがあります。ディスク容量を有効に利用するには、少量のデータをパージします。また、データを追加でパージする前にストレージに対する影響を確認します。
初回パージ
パージによってジャーナルが生成されます。大量のデータをパージすると、その結果生成されるジャーナルによって大量のディスク容量が消費されることがあります。ディスク容量の節約するために、管理データを初めてパージする際に以下の方法を採用できます。
-
データをパージするネームスペースに切り替えます。
-
[相互運用性]→[管理]→[管理データの削除] ページに移動します。
-
比較的少量のデータがパージされるようにパージ・パラメータを設定します。
例えば、[これよりも新しいものを削除しない] を比較的大きな数値に設定します。詳細は、"データ・パージの設定" を参照してください。
Caution:パージは元に戻すことができません。また、パージによって、意図しない孤立データが生じたり、未解決の要求が失われることがあります。このため、処理を進める前に、各設定の説明を注意深く確認することをお勧めします。
-
[削除開始] をクリックします。
-
十分な量のデータがパージされるまで、[これよりも新しいものを削除しない] の値を徐々に小さくして、追加データをパージします。
データの手動パージ
[管理データの削除] ページでは、指定されたネームスペースのイベント・ログ、メッセージ・ウェアハウス、ビジネス・プロセス・ログ、ビジネス・ルール・ログ、および I/O アーカイブ・ログのエントリを一度に削除できます。このページには、以下の列が含まれるテーブルで、エントリに関する情報が表示されます。
-
[レコードタイプ] — 行に関連付けられているプロダクション・データのタイプを示します。各行には、現在実行中のプロダクションが継続的に生成する 1 つの種類の成果物が含まれています。成果物の種類には、イベント・ログ、メッセージ、ビジネス・プロセス、ビジネス・ルール・ログ、I/O ログ、または管理対象アラートがあります。
-
[カウント] — プロダクションに関して格納されている、指定された [レコードタイプ] のエントリの合計数を示します。[カウント] の値を使用して、エントリをパージした方がよいかどうかを判断し、パージした方がよい場合は、何日分のレコードを保持するのかを決定します。
-
[削除されました] — [削除開始] をクリックして、システムがパージ処理を完了した後、指定された [レコードタイプ] のパージされたエントリの合計数を示します。
また、[パージ条件] 領域には、システム管理者によって手動パージに構成されているデフォルトの設定が表示されます。
プロダクション・データを手動でパージする手順は、以下のとおりです。
-
データをパージするネームスペースに切り替えます。
-
[相互運用性]→[管理]→[管理データの削除] ページに移動します。
-
適切な特権がある場合は、必要に応じて [パージ条件] 領域の設定を変更します。
詳細は、"データ・パージの設定" を参照してください。
Caution:パージは元に戻すことができません。また、パージによって、意図しない孤立データが生じたり、未解決の要求が失われることがあります。このため、処理を進める前に、各設定の説明を注意深く確認することをお勧めします。
-
[削除開始] をクリックします。
システムは、[パージ条件] 領域の設定を使用して、永続ストアを直ちにパージします。このページでは、バックグラウンド・ジョブを使用してパージを実行し、最後に実行したパージの結果を、ステータス・コード、つまりバックグラウンド・ジョブが実行中であるのか実行に失敗したのかの通知を含めてレポートします。パージの完了後、[削除されました] 列に、パージされたレコードの数が表示されます。
指定されたネームスペースでのパージの実行中は、[削除開始] ボタンは無効になっています。
管理ポータルを使用するパージでは、関連するビットマップ・インデックスの未使用ノードを一度に最大 500 個削除します。大量のメッセージをパージすると、インデックス・グローバルに未使用ノードが残り、ディスク容量を占有します。これらのグローバル・ノードを削除するには、メッセージのパージ API を使用して追加のパージを実行できます。
スケジュールでのデータのパージ
[タスクスケジューラウィザード] では、指定したネームスペースの次のタイプのプロダクション・データを個別にまたはすべて一度にパージするようスケジュールできます。
-
イベント
-
メッセージ
-
ビジネス・プロセス
-
ルール・ログ
-
I/O ログ
-
ホスト・モニタ・データ
-
管理対象アラート
定期的にデータを自動パージするには、以下の手順を実行します。
-
[システムオペレーション]→[タスクマネージャ] に移動して、[新しいタスク] を選択します。
-
以下のフィールドに入力します。
-
[タスク名] — パージ・タスクの名前を指定します。
-
[このタスクを実行するネームスペース] — データをパージするネームスペースを選択します。
-
[タスクタイプ] — Ens.Util.Tasks.PurgeOpens in a new tab を選択します。
データ・パージのさまざまな設定が表示されます。
-
-
必要に応じて、データ・パージの設定を変更します。
詳細は、"データ・パージの設定" を参照してください。
Caution:パージは元に戻すことができません。また、パージによって、意図しない孤立データが生じたり、未解決の要求が失われることがあります。このため、処理を進める前に、各設定の説明を注意深く確認することをお勧めします。
-
必要に応じて、その他のオプションも指定します。
詳細は、"タスク・マネージャの使用" を参照してください。
-
[完了] をクリックします。
データのパージに適用可能な設定
ここでは、データのパージに影響を与える設定について説明します。これらの設定はすべて、設定されるネームスペースに固有です。適切な特権を持つユーザが設定を変更できます。
この設定を変更する場所 :
-
[管理データの削除] ページ
-
[データ削除の設定] ページ
-
[タスクスケジューラウィザード] ページ ([BodiesToo])
デフォルト : [無効]
パージの操作時に、メッセージ・ヘッダ (常にパージされる) に加えてメッセージ・ボディもパージするかどうかを指定します。
この設定が有効な場合、InterSystems IRIS はメッセージ・ヘッダとそれに対応するメッセージ・ボディをパージします。この設定が無効な場合、InterSystems IRIS はメッセージ・ヘッダのみをパージし、対応するメッセージ・ボディは保持します。
InterSystems IRIS では、ボディ・クラスが存在し、これが永続クラスであることを確認してから、これらをパージします。
InterSystems IRIS がメッセージ・ヘッダのみをパージすると、システムでは大量のメッセージ・ボディが蓄積される可能性があります。管理ポータルから保持されているメッセージ・ボディを削除することはできません。これらはプログラムでのみ削除できます。このため、[メッセージ・ボディを含む] または [BodiesToo] 設定を構成する際には、ディスク容量およびワークフローを考慮することをお勧めします。
また、InterSystems IRIS でメッセージ・ボディがパージされるときに、必ずしも、メッセージ・ボディのオブジェクト値型プロパティがすべて削除されるわけではありません。メッセージ・ボディとのシリアル・リレーションシップまたは子リレーションシップがあるオブジェクトのみが削除されます。その他のオブジェクトは、適宜、削除トリガを定義するか、メッセージ・ボディ・クラス内に %OnDelete() メソッドを実装することにより、手動で削除する必要があります。オブジェクト値プロパティの詳細は、"オブジェクト値プロパティの定義と使用" を参照してください。
この設定を変更する場所 :
-
[管理データの削除] ページ
-
[データ削除の設定] ページ
-
[タスクスケジューラウィザード] ページ ([整合性を保持])
デフォルト : [有効]
パージ・プロセスで、未完了のセッションに含まれるメッセージをスキップするかどうかを指定します。
この設定が有効な場合、InterSystems IRIS は、パージの経時基準を満たすメッセージを検出しても、それが未完了のセッションに含まれる場合、そのメッセージ・ヘッダもメッセージ・ボディもパージしません。未完了のセッションとは、ステータスが [完了]、[エラー]、[中止されました]、または [破棄されました] 以外のメッセージを含むセッションです。
[完了したセッションのみ削除] または [整合性を保持] 設定を有効にすると、InterSystems IRIS では、各関連セッション内のすべてのメッセージ (ビジネス・プロセス・インスタンスを含む) を確認するクエリが実行され、未完了のセッションが特定されます。このため、この設定を有効にすると、パージ処理の完了に必要な時間が長くなることがあります。
セッションレベルの整合性を維持することによって、長時間実行されるビジネス・プロセスに対応できます。[完了したセッションのみ削除] または [整合性を保持] 設定を構成する際には、長時間実行されるビジネス・プロセスに対応する必要があるかどうか、および未完了のセッションに重要でない古いメッセージが含まれるかどうかを考慮することをお勧めします。
パージ処理には、ワークフロー・プロセスなどの長時間実行されるシステム・プロセスに関連付けられたメッセージが含まれる可能性があります。この設定を無効にする場合は、[これよりも新しいものを削除しない] の値を注意深く確認し、重要なシステム・データがパージされないようにしてください。
この設定を変更する場所 :
-
[管理データの削除] ページ
デフォルト : [無効]
同じネームスペース内の関連するビットマップ・インデックスもクリーンアップするかどうかを指定します。
この設定を変更する場所 :
-
[管理データの削除] ページ
-
[データ削除の設定] ページ
この設定は、[メッセージ・ボディを含む] および [完了したセッションのみ削除] と同じ場所に表示され、これらの設定の説明を目的としています。
デフォルト : [プロダクションによってはメッセージオブジェクトとして一時的ではないより大きなデータの一部を使用する場合があるため、"メッセージボディを含む" はオフです。] [[完了したセッションのみ削除] はまだ処理が完了していないメッセージを保持するため、オンになっています。]
説明されている 2 つの設定を変更する場合、必要に応じて [説明] を編集します。
この設定を変更する場所 :
-
[管理データの削除] ページ
-
[データ削除の設定] ページ
-
[タスクスケジューラウィザード] ページ ([保持する日数])
デフォルト : 7
何日分のデータを保持するかを指定します。日数には今日が含まれます。
この値を 0 (ゼロ) に設定すると、InterSystems IRIS は、いずれのレコードも保持せずに、パージ処理時に存在しているすべてのエントリをパージします。この値を 1 に設定すると、InterSystems IRIS はローカル・サーバの時刻での今日の日付で生成されたメッセージのみを保持します。
この設定を変更する場所 :
-
[タスクスケジューラウィザード] ページ
デフォルト : [イベント]
パージするレコードのタイプを指定します。
この設定を変更する場所 :
-
[相互運用性の設定] ページ
デフォルト : [無効]
データをパージするときに古い値をジャーナル・ファイルに書き込むかどうかを指定します。この場合、ジャーナル・ファイルには削除指示のみが含まれ、変更をロールバックすることはできません。この設定が無効の場合、ジャーナル・ファイルには、通常どおり新しい値と古い値の両方が含まれます。"相互運用性の設定の定義" を参照してください。
メッセージのパージ API の使用
InterSystems IRIS には、メッセージをパージできるユーティリティ・メソッドがあり、さまざまな種類のメッセージのパージ方法をより細かく制御できます。このメソッドは、クラス Ens.Util.MessagePurgeOpens in a new tab にあります。
classmethod Purge(Output pDeletedCount As %Integer,
pDaysToKeep As %Integer = 7,
pKeepIntegrity As %Boolean = 1,
pBodiesToo As %Boolean = 0,
pBitmapChunkLimit As %Integer = 500,
ByRef pExtendedOptions As %String) as %Status {
}
このメソッドを使用するには、Ens.MessageHeaderOpens in a new tab テーブルに対する SELECT 特権が必要です。
このメソッドは、作業キュー・マネージャを使用して、パージを複数の並列バッチに分割できます。このオプションは、[TypesToPurge] が [メッセージ] の場合のみ有効になります。前節を参照してください。
このメソッドには、以下の引数があります。
出力として返されるこの引数は、削除されたメッセージの数を示します。
前節の "[これよりも新しいものを削除しない] ([保持する日数])" を参照してください。
前節の "[完了したセッションのみ削除] ([整合性を保持])" を参照してください。
前節の "[メッセージ・ボディを含む] ([BodiesToo])" を参照してください。
検査対象であり、その後削除される可能性のある関連ビットマップ・インデックスの最大ノード数を指定します。未使用のノード、つまりテーブル内のどのレコードにもマップされなくなったノードのみが削除されます。
ビットマップ・インデックスのグローバルの各ノードは、関連するテーブルの 64000 件のレコードに対応しており、ノードをスキャンして未使用であることを確認するには時間がかかります。そのため、API はデフォルトでインデックスのグローバルのすべてのノードをスキャンしません。
この引数 (参照渡しされる必要があります) は、以下の追加オプションの一部または全部を指定する多次元配列です。
-
pExtendedOptions("LimitToConfigItems") は、プロダクション・ホストの構成名のカンマ区切りリストです。このオプションを指定する場合、パージはリストのビジネス・ホストが送信または受信するメッセージに限定されます。
-
pExtendedOptions("WQCategory") により、パージでは指定のカテゴリを使用して作業キュー・マネージャを使用します。指定のカテゴリが存在しない場合は、デフォルトのカテゴリが使用されます。
作業キュー・マネージャを使用する場合、メッセージのパージは、作成のタイム・スタンプに基づきメッセージを選択する個々の SQL クエリを使用して、バッチに分割されます。以下に例を示します。
-
あるバッチで、タイム・スタンプ A (これを含む) からタイム・スタンプ B (これを含まない) までのメッセージをパージします。
-
別のバッチで、タイム・スタンプ B (これを含む) からタイム・スタンプ C (これを含まない) までのメッセージをパージします。
-
さらに別のバッチで、タイム・スタンプ C (これを含む) からタイム・スタンプ D (これを含まない) までのメッセージをパージします。
バッチ・サイズを指定するには、1 回のバッチのメッセージ数を指定するか、期間 (分単位) を指定します。1 回のバッチのメッセージ数はデフォルトで 100000 です。
-
-
pExtendedOptions("WQBatchSize") は、WQBatchPeriodMinutes が定義されておらず、WQCategory を使用している場合に、バッチのサイズを制御します。この設定は、1 回のバッチのメッセージ数 (完全性や構成項目名の要件を除く) を指定します。最小カウントは 10000 です。
-
pExtendedOptions("WQBatchPeriodMinutes") は、バッチのサイズを制御するための代替方法を指定します。これは、WQBatchSize が定義されておらず、WQCategory を使用している場合に使用されます。pExtendedOptions("WQCategory") に関するコメントを参照してください。
-
pExtendedOptions("StartDateTime") および pExtendedOptions("DoNotDeleteEndDateTime") は、削除する期間の開始と終了を指定する UTC タイム・スタンプです。具体的には、メッセージのタイム・スタンプが pExtendedOptions("StartDateTime") 以上かつ pExtendedOptions("DoNotDeleteEndDateTime") 未満の場合、メッセージはパージされます (他の条件が適用される場合)。
pExtendedOptions("StartDateTime") および pExtendedOptions("DoNotDeleteEndDateTime") は、pDaysToKeep をオーバーライドします。
例えば、ビジネス・ホスト Service1、Process1、Operation1 が送信または受信するすべてのメッセージをパージするとします。これを行うには、以下のようにパージ・メソッドを呼び出します。
set myArray("LimitToConfigItems")="Service1,Process1,Operation1"
set status=##class(Ens.Util.MessagePurge).Purge(.DeleteCount,,,,,.myArray)
DeleteCount 変数には、削除されたメッセージの数が含まれます。