DB2 Version 10.1 for Linux, UNIX, and Windows

履歴表

各システム期間テンポラル表は、履歴表を必要とします。 システム期間テンポラル表の行が更新または削除されると、データベース・マネージャーは古い行のコピーをそれに関連した履歴表に挿入します。 この古いシステム期間テンポラル表データの保管により、過去の時点のデータを取り出すことができます。

行データを保管するには、履歴表の列とシステム期間テンポラル表の列の名前、順序、およびデータ・タイプが同じでなければなりません。 CREATE TABLE ステートメントの LIKE 節を使用することにより、システム期間テンポラル表の列と同じ名前と説明を持つ履歴表を作成することができます。以下はその例です。
CREATE TABLE employees_history LIKE employees IN hist_space;
ALTER TABLE ステートメント USE HISTORY 節の説明にリストされている制限に既存の表が抵触しない場合、その既存の表を履歴表として使用することができます。
履歴表を作成した後、バージョン管理を追加して、システム期間テンポラル表と履歴表の間のリンクを確立します。
ALTER TABLE employees ADD VERSIONING USE HISTORY TABLE employees_history;
バージョン管理を使用可能にすると、履歴表は以下の規則と制限に従います。

履歴表の明示的変更が必要になるような状況はほとんどありません。 これを行うと、システム期間テンポラル表のデータ履歴を監査できなくなる可能性があります。 履歴表へのアクセスを制限してそのデータを保護する必要があります。

通常の操作では、履歴表に対するアクティビティーのほとんどは挿入と読み取りです。 更新や削除はめったにありません。 更新や削除がないということは、通常は新しい行の挿入に再使用できるフリー・スペースが履歴表にないことを意味します。 履歴表への行の挿入によってワークロード・パフォーマンスに悪影響が出ている場合は、 APPEND ON オプションを使用して履歴表の定義を変更することにより、フリー・ スペースの検索をしないようにすることができます。 このオプションを使用すると、フリー・スペースの検索に関連した処理が行われず、新しい行は表の末尾に直接付加されます。
ALTER TABLE employees_history APPEND ON;
システム期間テンポラル表をドロップすると、それに関連した履歴表およびその履歴表で定義されている索引は暗黙的にドロップされます。 システム期間テンポラル表をドロップするときに履歴データが失われないようにするために、RESTRICT ON DROP 属性を使って履歴表を作成するか、RESTRICT ON DROP 属性を追加することによって履歴表を変更することができます。
CREATE TABLE employees_history LIKE employees WITH RESTRICT ON DROP;
履歴表では削除より挿入の方が多く行われるため、履歴表は常に大きくなり続け、消費されるストレージの量は増え続けます。 履歴表を整理して不要になった行を除去する方法を決めるのは、複雑な作業になることがあります。 それを行うときには、個々のレコードの価値を知っている必要があります。 顧客契約など手を付けてはならない内容もあり、それらは決して削除できません。 一方、Web サイト訪問者の情報など、心配せずに整理できるレコードもあります。 通常、行の整理とアーカイブをいつ行えるかを判定するときには、行の経過時間ではなく、何らかのビジネス・ロジックが決定要因となります。 整理に関する規則として考えられるものを以下にリストします。
履歴表から古いデータを定期的に整理する方法として、以下の例があります。