履歴セット - 生成方法Issue この記事の目的は、プラットフォームがどのように履歴セットを作成するかを説明することです。 詳細を知らずに sys_history_line テーブルや sys_history_set テーブルを覗くと、混乱を招く可能性があります。 監査セットと履歴セットの違いについての詳しい説明は、公式ドキュメント「監査セットと履歴セットの違い」をご覧ください。 履歴セット 履歴セットが使用される理由はなんですか?sys_audit と同じデータではないのですか? レコードの履歴を表示するたびに、sys_audit データから新しい履歴リストが生成されるのを避けるために (これには時間がかかります)、プラットフォームは「履歴セット」と呼ばれる概念を使用します。 これらは、ユーザープロファイル情報に基づいて生成されるため、パーソナライズされた履歴ビューと見なすことができます。 その後、セットは sys_history_set テーブルと sys_history_line テーブルに保存されます。 ということは、これらのテーブルは巨大になるに違いありません。パフォーマンスやスペースの心配はないのですか? 最終的な目的は、大きな sys_audit テーブルへのクエリを回避することであるため、履歴セットと履歴レコードは次のように制限されます。 テーブルクリーナーを使用して、30 日間更新されていない履歴セットレコードを削除する。テーブルローテーションを使用して、4 つの履歴テーブルを 7 日ごとにローテーションする。つまり、28 日以上経過した履歴レコードは削除される。 システムはどのようにして新しい履歴セットを作成するタイミングを判断しますか? 新しい履歴セットは、以下のユーザープロファイル要素の可能な組み合わせごとに作成されます。 言語タイムゾーンドメイン日時/時刻形式 レコードの最終更新日と sys_history_set テーブルの最後のエントリが異なる場合、新しい履歴セットの作成もトリガーされます。 例 3 人のユーザーを例にとってみましょう。 White さん: 英語、IST タイムゾーン、グローバルドメイン、dd-MM-yyyy HH:mm:ss 日付/時刻形式 Pink さん: 英語、GMT タイムゾーン、グローバルドメイン、dd/MM/yyyy HH:mm:ss 日付/時刻形式 Brown さん: 英語、GMT タイムゾーン、グローバルドメイン、dd/MM/yyyy HH:mm:ss 日付/時刻形式 White さんがある記録の履歴アクティビティを表示しようとすると、プロフィール設定に従って新しい履歴セットが生成されます。Pink さんでも同じことが起こります。 Brown さんが履歴データを表示しようとすると、プラットフォームは新しい履歴セットを生成する代わりに、Pink さん用に作成された履歴セットを復元し、sys_audit テーブルに対する負荷の高いクエリを回避します。 これが混乱を招く可能性があるのはなぜですか? sys_history_line テーブルを見てみましょう。 上記からわかるように、同じ行が基本的に 3 回繰り返され、各行は同じ履歴セットに関連付けられています。更新時刻とユーザー名は同じです これは何を意味しているのでしょうか? すべての行が同じ履歴セット ID でグループ化されていますが、それぞれの行は異なる履歴セットの順列に対応しています。 更新時刻とユーザー名は、レコード自体の sys_created_on フィールドと sys_created_by フィールドに対応しています。 Related LinksKB0547662 - 監査と履歴セット | 連携方法 KB0832516 - 監査 - よく寄せられる質問