表のタイプ
DB2® では、ユーザー・データを表に格納します。DB2 は、いくつかの表タイプをサポートし、その各々にはそれ自身の目的と特性があります。
DB2 は、以下のタイプの表をサポートします。
- アクセラレーターのみの表
- DB2 ではなく、アクセラレーターのみに行を格納する表。アクセラレーターのみの表の表定義と列定義は、DB2 カタログ表に含まれています。アクセラレーターのみの表を参照する照会は、アクセラレーター内で実行する必要があります。アクセラレーターのみの表を参照する照会が照会アクセラレーションに適格でない場合は、エラーが発行されます。アクセラレーターのみの表の内容を変更するには、アクセラレーター内でデータ変更ステートメントを実行する必要があります。
- 補助表 (auxiliary table)
- SQL ステートメント CREATE AUXILIARY TABLE を使用して作成される表であり、 基本表に定義されている列のデータを収容するために使用されます。
- 基本表 (base table)
- DB2 内の最も一般的なタイプの表。基本表は、SQL CREATE TABLE ステートメントで作成します。DB2 カタログ表 SYSIBM.SYSTABLES には、基本表の記述が保管されます。表の説明および表のデータは永続的です。このタイプの表を参照するプログラムおよびユーザーはすべて、表の同じ説明および表の同じインスタンスを参照します。
- クローン表 (clone table)
- 構造的に基本表と同一の表。クローン表を作成するには、ADD CLONE 文節を含む ALTER TABLE ステートメント (基本表に対するステートメント) を使用します。クローン表は、基本表と同じ表スペースの別のインスタンスに作成され、あらゆる面で基本表と構造的には同一で、同じ索引、BEFORE トリガー、および LOB オブジェクトを持っています。 DB2 カタログでは、SYSTABLESPACE 表は、表スペースには 1 つの表しかないことを示しますが、SYSTABLESPACE.CLONE はクローン表が存在することを示します。 クローン表を作成できるのは、DB2 管理対象の範囲パーティション化表スペースまたは増加対応パーティション表スペースだけです。基本表とクローン表には、それぞれ独立したデータ行が入った別々の基本 VSAM データ・セット (そのデータ・セット・インスタンス番号で識別される) があります。
- 空表
- 行がゼロの表。
- 履歴表
- 関連付けられているシステム期間テンポラル表の行の履歴バージョンを保管するために使用される表。
- マテリアライズ照会表
- SQL CREATE TABLE ステートメントを使って定義された表であり、1 つ以上のソース表から得られるマテリアライズ・データを格納するのに使用されます。
マテリアライズ照会表が有用なのは、大容量のデータに対して実行する複雑な照会に対してです。DB2 は、
そのような複雑な照会のすべてまたは一部を事前に計算して、事前計算 (マテリアライズ) された結果を使用して、その照会に一層効率的に応答します。マテリアライズ照会表は、データウェアハウジングとビジネス・インテリジェンスのアプリケーションで一般に使用されます。
複数の DB2 カタログ表 (SYSIBM.SYSTABLES および SYSIBM.SYSVIEWS を含む) には、マテリアライズ照会表の説明と、表、ビュー、または関数に対する従属関係に関する情報が保管されます。マテリアライズ照会表を定義する属性により、表が以下のいずれであるかを DB2 に指示します。
- システム保守対象またはユーザー保守対象。
- リフレッシュ可能: マテリアライズ表はすべて、REFRESH TABLE ステートメントで更新できます。ユーザー保守対象のマテリアライズ照会表のみが、LOAD ユーティリティーと、UPDATE、INSERT、および DELETE SQL ステートメントで更新することもできます。
- 照会最適化が使用可能: 自動照会再書き込みでは、マテリアライズ照会表を使用可能または使用不可にすることができます。
マテリアライズ照会表を使用すると、動的 SQL 照会のパフォーマンスを高めることができます。マテリアライズ照会表を使用して 照会の一部を解決できると DB2 が判断した場合、 照会が DB2 によって書き直され、 マテリアライズ照会表が使用されるようになる可能性があります。この判断の一部は、CURRENT REFRESH AGE 特殊レジスターと CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION 特殊レジスターの設定値に基づいて行われます。
- 結果表
- 1 セットの行が入った表であり、この行は、DB2 が SQL ステートメントへの応答の中で 1 つ以上の基本表から直接または間接的に選択または生成します。基本表または一時表とは異なり、結果表は CREATE ステートメントを使用して定義したオブジェクトではありません。
- サンプル表
- DB2 ライセンス・プログラムと一緒に出荷されるいくつかの表の中でサンプル・データが入っている表。本書の例の多くは、サンプル表に基づいたものです。
- テンポラル表
- 行が有効な期間を記録する表。
DB2 では、 システム期間 (SYSTEM_TIME) とアプリケーション期間 (BUSINESS_TIME) という 2 種類の期間がサポートされています。システム期間は、 行の有効期間を示すシステム管理の値の列のペアからなります。アプリケーション期間は、 行の有効期間を示すアプリケーション管理の値の列のペアからなります。
- システム期間テンポラル表
- システム期間テンポラル表とは、システム期間データ・バージョン管理で定義されている基本表です。ALTER TABLE ステートメントで ADD PERIOD SYSTEM_TIME 節を指定することで、既存の表を変更してシステム期間テンポラル表にすることができます。システム期間テンポラル表に対応する履歴表を作成した後に、USE HISTORY TABLE 節を指定した ALTER TABLE ADD VERSIONING ステートメントを発行することにより、表でのシステム期間のデータのバージョン管理を定義できます。
- アプリケーション期間テンポラル表
- アプリケーション期間テンポラル表は、アプリケーション期間 (BUSINESS_TIME) を含む基本表です。ALTER TABLE ステートメントで ADD PERIOD BUSINESS_TIME 節を指定することで、既存の表を変更してアプリケーション期間テンポラル表にすることができます。
- バイテンポラル表 (bitemporal table)
- バイテンポラル表とは、システム期間テンポラル表とアプリケーション期間テンポラル表の両方である表です。バイテンポラル表 (bitemporal table) を使用して、アプリケーション期間情報とシステム・ベースの履歴情報を維持できます。したがって、期間に基づいてデータを照会する方法の柔軟性が高くなります。
- 一時表
- SQL ステートメントの CREATE GLOBAL
TEMPORARY TABLE または DECLARE GLOBAL TEMPORARY TABLE で定義して一時的にデータを保持する表。
一時表が特に有用なのは、多くの行が入った中間結果表をソートまたは照会し、この大量行のほんの一部分だけを永続的に格納したい場合です。
- 作成されたグローバル一時表
- SQL CREATE GLOBAL TEMPORARY TABLE ステートメントで定義された表。
DB2 カタログ表 SYSIBM.SYSTABLES には、一時表の記述が保管されます。表の記述は、永続的で、共有可能です。
しかし、作成済みの一時表を参照する個別アプリケーション・プロセスにはそれぞれ、表の独自の別個のインスタンスがあります。つまり、アプリケーション・プロセス A とアプリケーション・プロセス B が両方とも、TEMPTAB という名前の作成済みの一時表を使用する場合、以下のことが言えます。
- アプリケーション・プロセスはそれぞれ、同じ表記述を使用します。
- どちらのアプリケーション・プロセスも、TEMPTAB の他方のアプリケーション・インスタンス内の行にアクセスできず、その行を認識しません。
- 宣言済みグローバル一時表
- SQL DECLARE GLOBAL TEMPORARY TABLE ステートメントで定義された表。 DB2 カタログは、宣言済み一時表の記述を保管しません。 したがって、表の記述およびインスタンスは永続ではありません。 複数のアプリケーション・プロセスが同じ宣言済み一時表を名前で参照できますが、実際には、表の同じ記述またはインスタンスを共有するわけではありません。例えば、アプリケーション・プロセス A が 15 列の TEMP1 という名前の宣言済み一時表を定義すると想定します。アプリケーション・プロセス B が、5 列の TEMP1 という名前の宣言済み一時表を定義します。それぞれのアプリケーション・プロセスでは、TEMP1 の独自の記述を使用します。どちらのアプリケーション・プロセスも、TEMP1 の他方のアプリケーション・インスタンス内の行にアクセスできず、その行を認識しません。
- XML 表 (XML table)
- XML データのみを保持する特殊な表。XML 列を持つ表を作成すると、DB2 は、XML データを格納するための XML 表スペースおよび XML 表を暗黙的に作成します。
これらのさまざまなタイプの表は、このトピックでは記載していない別の点で違いがあります。