テーブルローテーション
テーブルをローテーションすることでパフォーマンスを最適化し、データのライフサイクルを管理し、システムの効率を維持しながら古いデータを体系的にアーカイブできるようにします。
テーブルローテーションはインスタンスのパフォーマンスを維持し、増加するデータセットのクエリーに関連するリスクを回避します。この機能では、[sys_created_on] フィールドを使用して、日付に基づいてデータセットを複数のテーブルに分離します。
- 機能
- アドミニストレーターは、プロセスの時間パラメーター (期間) とその期間内のテーブルの数 (ローテーション) を指定します。ローテーションによってローテーションの最後のテーブルが書き込まれた後は、ローテーションの最初のテーブルが上書きされます。カスタムテーブルにテーブルローテーションを適用する前に、ServiceNow テクニカルサポートにお問い合わせください。例:
- クエリー「
Records created between 2015/12/10 08:49 and 2015/12/09 07/34 where topic=SystemCommand」は単一テーブルの SQL クエリーに変換されます。これは、sys_created_on 節が単一のシャードをターゲットとするからです。 - クエリー「
Records updated between 2015/12/10 08:49 and 2015/12/09 07/34 where topic=SystemCommand」または日付範囲のないクエリーは、すべてのシャードをターゲットにする必要があるため、すべてのシャードでユニオンクエリーとして変換されます。
- クエリー「
- 長所
- 現在のデータに影響を与えずに古いデータを削除できます (たとえば、テーブルの削除または切り捨て)。
- テーブルは妥当なサイズにしか拡張されません。
- クエリーの日付がわかっている場合は、データの作業セットが削減されます。
- 短所
- テーブルローテーションの日付を使用しないクエリー ([sys_created_on] フィールドを使用するなど) では、複数のテーブルにまたがる時間範囲をクエリーするという非効率的なユニオンクエリーが強制され、サブテーブルの数が多い場合は非常に遅くなる可能性があります。
パフォーマンスを向上させるには、クエリーに作成日の範囲を含めることをお勧めします。
- ユーザーはローテーションが適用されているテーブルにドット連結することはできません。
- テーブルローテーションの日付を使用しないクエリー ([sys_created_on] フィールドを使用するなど) では、複数のテーブルにまたがる時間範囲をクエリーするという非効率的なユニオンクエリーが強制され、サブテーブルの数が多い場合は非常に遅くなる可能性があります。
順番に書き込まれるテーブルまたは挿入専用のテーブルにテーブルローテーションを使用できます。sys_import テーブルまたはタスク [task] テーブルを拡張するテーブルには、テーブルローテーションを使用できません。