Share via


システム ジョブ (AsyncOperationBase) とプロセス ログ (WorkflowLogBase) テーブルからレコードをクリーンアップする

システム ジョブ (AsyncOperation) テーブル は、システム ジョブを格納します。 実際のデータベース テーブルの名前は AsyncOperationBaseです。 システム ジョブは、非同期で登録されたワークフローやプラグインなどの非同期拡張機能と、一括削除、一括インポート、ロールアップ操作などの他のバックグラウンド操作を表します。 イベントが発生し、同期拡張機能が処理された後、プラットフォームは非同期拡張機能のコンテキストをシリアル化し、AsyncOperation レコードとしてデータベースに保存します。

Dataverse 組織で非同期ワークフローがトリガーされた場合は、非同期ジョブの処理を追跡するために AsyncOperation テーブルでレコードが作成されます。 プロセス ログ (WorkflowLog) テーブル にも他のレコードが作成され、ワークフロー実行用のログを維持します。 実際のデータベース テーブルの名前は WorkflowLogBaseです。 ビジネス プロセス フロー (BPF) は、BPF の BPF ステージ移行およびアクション ログも WorkflowLog テーブルに格納します。

組織でワークフローまたはビジネス プロセス フローを多用している場合、これらのテーブルは時間の経過とともに大きくなり、最終的にはパフォーマンスの問題を引き起こし、組織データベースのストレージを過剰消費するほど大きくなります。

一括削除ジョブ

すべての環境は、30日より前に正常に完了したワークフロー システム ジョブを削除するために、すぐに使用できる一括削除ジョブが設定されています。 顧客は、他の一括削除ジョブを設定して、AsyncOperation レコードを削除できます。 完了したジョブが AsyncOperation テーブルに蓄積されないように、30 日より前の完了したシステムジョブ (タイプまたは結果に関係なく) を削除するジョブを設定することをお勧めします。

一括削除システム ジョブを利用して、AsyncOperation テーブルと WorkflowLog テーブルの両方から不要なレコードを削除できます。 一括削除システム ジョブを表示するには:

  1. Power Platform 管理センター にサインインします。
  2. 左側のナビゲーション ウィンドウで環境を選択し、上部のメニュー バーで 設定を選択します。
  3. データ管理>一括削除を選択します。

定期的な一括削除システム ジョブの表示。

一括レコード削除グリッドから、ビュー セレクターを使用して、完了、進行中、保留中、および定期的な一括削除システム ジョブを表示できます。 定期的な一括削除システム ジョブ ビューには、すぐに使用できる一括削除システム ジョブのジョブ定義が表示されます。

これらの定期的な一括削除システムのジョブ レコードの 1 つを開くと、削除するレコードとジョブの実行スケジュールを特定するためにジョブが使用するクエリを確認できます。 これらのすぐに使用可能なシステム ジョブの場合、システム ジョブで使用されるクエリを変更することはできませんが、ジョブの実行スケジュールを変更することはできます。 ビュー セレクターを更新して、既にスケジュールされている、進行中の、または実行されているジョブを表示する場合は、ジョブをキャンセル、再開、または延期できます。 これらのオプションは、レコードを開いたときにアクション メニューに表示されます。

一括削除操作アクション メニュー。

独自の一括削除ジョブの作成

すぐに使用できるシステムの一括削除ジョブが組織のニーズを満たさない場合は、独自の一括削除ジョブを作成できます。 一括レコード削除グリッドから、コマンド バーで新規を選択します。 これにより、一括削除ウィザードが開き、削除するレコードのクエリを定義できます。 ウィザードには、クエリが削除のために取得する一連のレコードをプレビューする機能もあり、クエリが正しく作成されたかどうかをテストできます。

新しい一括削除操作を作成します。

AsyncOperation テーブルからワークフロー レコードをクリーンアップするには、システム ジョブ テーブルを選択し、保存されたビューを使用するから [新規] を選択し、独自のクエリを作成します。 完了したワークフローのみを削除できます。 実行を待機しているワークフローまたは現在進行中のワークフローは、システム ジョブで削除することはできません。

クエリに次の条件を追加します:

  • システム ジョブ タイプがワークフローと等しい— ターゲット ワークフロー レコード。
  • ステータスが完了と等しい — 完了したワークフローのみが有効です。
  • [オプション] 完了した StateCode に対して有効な StatusCodes (成功/失敗/キャンセル) でフィルター処理します。
  • [オプション] 完了日フィールドでフィルター処理し、古いワークフローのみを削除します。
  • [オプション] 適用する他のフィルター。

検索条件の定義ウィンドウ。

ウィザードの次のページで、一括削除ジョブを実行する頻度を設定できます。 1 回限りの一括削除ジョブを作成するか、設定した間隔でジョブを実行できるようにスケジュールを定義できます。

一括削除ジョブの期間を設定します。

ワークフロー設計のベスト プラクティス

ワークフロー テーブルの不要なレコードを削除したら、将来テーブルが急速に大きくなるの防ぐために、ワークフロー設計で実行できるいくつかの手順があります。

非同期のワークフローでは、ワークフロー エディターで完了したワークフロー ジョブを自動的に削除する (ディスク容量の確保) を有効にすることをお勧めします。 これにより、容量を確保するために、システムで成功した実行のワークフロー ログを削除できます。 失敗したワークフロー実行のログは、トラブルシューティングのために常に保存されます。

完了したワークフロー ジョブを自動的に削除するように、ワークフロー ジョブの保持を設定します。

同期ワークフローの場合、ワークフロー エディターで、エラーが発生したワークフロー ジョブのログを保持を有効にすることをお勧めします。 これにより、失敗したワークフロー実行のログは、トラブルシューティングのために常に保存されます。 成功したワークフロー実行のログは、領域を節約するために常に削除されます。

エラーが発生したワークフロー ジョブのログを保持するようにワークフロー ログの保持を設定します。

AsyncOperation ファイル容量の使用状況

これまで、非同期操作コンテキスト全体が データ プロパティとして AsyncOperation テーブルで直接シリアル化されていたため、大規模なレコード (添付ファイルなど) に非同期プラグイン登録がある場合、サイズが急速に大きくなる傾向がありました。 2021 年の初めから、非同期操作のデータ部分はファイル ストアに移動されました。 そのため、非同期操作のデータ サイズは、データベース容量とファイル容量に部分的にカウントされます。 これにより、コストが削減され (ファイル容量はデータベース容量よりも低いレートで課金されるため)、全体的なパフォーマンスが向上します (AsyncOperation テーブルに対するクエリのパフォーマンスが向上するため)。

注意

AsyncOperation レコードに関連するファイルは直接削除できません。 ファイル容量を再利用するには、この記事で説明されている AsyncOperation レコードの保持ポリシーとクリーンアップ ポリシーを確認してください。 AsyncOperation レコードが削除されると、対応するファイルも削除されます。

Dataverse ストレージ モデルとレポートの詳細については、新しい Microsoft Dataverse ストレージ容量 を参照してください。

参照

データベースのストレージを削減する
大容量の特定の対象データを一括削除で削除する
Microsoft Dataverse リアルタイム ワークフロー
従来の Dataverse バックグラウンド ワークフロー
完了したバックグラウンド ワークフロー ジョブを自動的に削除する
非同期サービス