古いレコードや不要なレコードの削除
古いレコード、期限切れのレコード、または不要なレコードをテーブルから自動的に削除します。
タスク [task] テーブルなどのコアテーブルの古い非アクティブなレコードや、Now Platform で作成したカスタムテーブルのレコードを、テーブルクリーンアップルールを使用して削除します。
- フィルターナビゲーターで「sys_auto_flush.list」と入力すると、自動フラッシュ [sys_auto_flush] テーブル内のすべてのテーブルクリーナールールのリストを表示できます。自動フラッシュテーブルには、ベースシステムテーブルのルールと、それに対応するレコードの経過時間が表示されます。
- 単一のテーブルに定義されているテーブルクリーナールールのリストを表示するには、次の場所に移動します。 をクリックし、テーブルのデータ管理ポリシーレコードを選択します (存在する場合)。アーカイブルールまたはテーブルクリーナールールを持つテーブルのデータ管理ポリシーレコードが自動的に作成されます。
遅いルール処理
テーブルクリーナーのスケジュール済みジョブは、1 時間に 1 回実行されます (デフォルト)。テーブルクリーナージョブが実行されると、各テーブルクリーナールールはプロセスの一部としていくつかのクエリを実行します。ルールの一致フィールドまたはその条件の重要な部分にインデックスがない場合、大量のデータに対してクエリが非効率的に実行されるため、ルールの処理が遅くなる可能性があります。
テーブルクリーナールールに、完了までに 30 秒以上かかるクエリがある場合、テーブルクリーナージョブ全体が停止します。デフォルトでは、テーブルクリーナーは 2 日間待機してからそのルールを再度テーブルクリーナージョブに含めるため、その間にテーブルクリーナージョブを中断することなく実行できます。システムプロパティを追加することで、待機期間の長さを設定できます。「テーブルクリーナーのプロパティ」を参照してください。
テーブルクリーンアップの無効化
テーブルの辞書レコードに [テーブルクリーナーの無効化 (Disable Table Cleaner)] 属性を追加することで、アドミニストレーターがテーブルクリーンアップルールを作成したり、特定のテーブルでテーブルクリーナーを実行したりできないようにすることができます。一部の内部システムテーブルには、デフォルトで [テーブルクリーナーの無効化 (Disable Table Cleaner)] 属性が追加されています。
テーブルクリーンアップの制限事項
- テーブルローテーションまたはテーブル拡張が設定されたテーブルでは、テーブルクリーナールールはサポートされません。インスタンス内の一部のテーブルには、テーブルローテーションまたはテーブル拡張が有効になる前に確立された従来のテーブルクリーナールールが存在する場合があります。これらの従来のルールは無視しても問題ありません。
- パフォーマンスは、テーブルのサイズと指定した条件によって異なります。たとえば、インデックスのない大きなテーブルでカスタム列を使用すると、パフォーマンスが大幅に低下します。パフォーマンスは、削除する行の数にも依存します。
- テーブルクリーナーは、1 つのテーブルからレコードを削除するのに最大 20 分かかります。クエリが遅い場合は、20 分間に削除されたレコードの量が少ない可能性があります。
- テーブルクリーナーは
DBDelete.setWorkflow()を呼び出しません。これは、DBDeleteオブジェクトがworkflow=false(Java ブール型のデフォルト値は false) で実行されることを意味します。その結果、レコード削除時にトリガーするはずのビジネスルール、ワークフロー、およびフローは、テーブルクリーナーのコンテキストではトリガーされません。このタイプの機能に依存するビジネスロジックがある場合、この点を考慮することが重要です。