DB2 Version 9.7 for Linux, UNIX, and Windows

SQL と XML の制限

以下の表は、SQL と XML の具体的な制限値を示しています。 最も制限が厳しい場合に準拠することによって、 容易に移植できるアプリケーション・プログラムを設計することができます。

表 1 は、制限値をバイト単位でリストしています。 ID の作成時に、アプリケーション・コード・ページからデータベース・コード・ページに変換された後に、これらの制限が課されます。 また、データベースからの ID の検索時に、データベース・コード・ページからアプリケーション・コード・ページに変換された後にも、これらの制限が課されます。 これらのいずれかのプロセスの中で ID 長さ限界を超えた場合には、切り捨てが生じるか、またはエラーが戻されます。

文字の長さ制限は、データベースのコード・ページとアプリケーションのコード・ページに応じて変わります。 例えば、UTF-8 文字の幅は 1 から 4 バイトの範囲にわたるため、限界が 128 バイトの Unicode 表における ID の文字の長さ制限は、どんな文字が使用されるかによって 32 から 128 文字の範囲になります。 名前の長さが、データベース・コード・ページへの変換後にこの表の限界を超えるような ID を作成しようとした場合には、エラーが戻されます。

ID 名を保管するアプリケーションは、コード・ページ変換が生じた後に ID のサイズが大きくなる可能性に対処できなければなりません。 ID がカタログから検索されるとき、それらはアプリケーション・コード・ページに変換されます。 データベース・コード・ページからアプリケーション・コード・ページに変換されると、結果として ID は、表のバイト限界よりも長くなってしまう可能性があります。 アプリケーションによって宣言されるホスト変数が、コード・ページ変換後に ID 全体を格納できない場合、それは切り捨てられます。 それが受け入れられない場合には、ID 名全体を受け入れられるように、ホスト変数のサイズを大きくすることができます。

DB2® ユーティリティーのデータ検索、およびユーザー指定コード・ページへのデータの変換にも、同じ規則が適用されます。 エクスポートなどの DB2 ユーティリティーがデータを検索し、(エクスポートの CODEPAGE 修飾子または DB2CODEPAGE レジストリー変数を使用して) ユーザー指定コード・ページへの変換を課す場合に、コード・ページ変換のために以下の表に明記されている限界を超えて ID が拡張すると、エラーが戻されるか、または ID が切り捨てられる可能性があります。

表 1. ID の長さの制限値
説明 バイト単位の最大値
別名 128
属性名 128
監査ポリシー名 128
許可名 (1 バイト文字のみ可) 128
バッファー・プール名 18
列名2 128
制約名 128
相関名 128
カーソル名 128
データ・パーティション名 128
データ・ソース列名 255
データ・ソース索引名 128
データ・ソース名 128
データ・ソース表名 (リモート表名) 128
データベース・パーティション・グループ名 128
データベース・パーティション名 128
イベント・モニター名 128
外部プログラム名 128
関数マッピング名 128
グループ名 128
ホスト ID1 255
データ・ソースのユーザー (リモート許可名) の ID 128
SQL プロシージャー中の ID (条件名、FOR ループ ID、ラベル、結果セット・ロケーター、ステートメント名、変数名) 128
索引名 128
索引拡張名 18
SPECIFICATION ONLY 指定の索引名 128
ラベル名 128
名前空間の URI (Uniform Resource Identifier) 1000
ニックネーム 128
パッケージ名 128
パッケージ・バージョン ID 64
パラメーター名 128
データ・ソースにアクセスするパスワード 32
プロシージャー名 128
ロール名 128
セーブポイント名 128
スキーマ名2,3 128
セキュリティー・ラベル・コンポーネント名 128
セキュリティー・ラベル名 128
セキュリティー・ポリシー名 128
シーケンス名 128
サーバー名 (データベース別名) 8
特定名 128
SQL 条件名 128
SQL 変数名 128
ステートメント名 128
表名 128
表スペース名 18
トランスフォーム・グループ名 18
トリガー名 128
トラステッド・コンテキストの名前 128
タイプ・マッピング名 18
ユーザー定義関数名 128
ユーザー定義メソッド名 128
ユーザー定義タイプ名2 128
ビュー名 128
ラッパー名 128
XML エレメント名、属性名、接頭部名 1000
XML スキーマ・ロケーションの URI (Uniform Resource Identifier) 1000
注:
  1. ホスト言語コンパイラーによっては、 変数名に関してより厳しい制限がある場合があります。
  2. SQLDA 構造が 30 バイトの列名を格納するように制限されている場合には、 18 バイトのユーザー定義タイプ名、およびユーザー定義タイプのための 8 バイトのスキーマ名。 DESCRIBE ステートメントでは SQLDA が使用されるので、DESCRIBE ステートメントを使用して列またはユーザー定義タイプ名情報を取得する組み込み SQL アプリケーションは、これらの制限に従う必要があります。
  3. 8 バイトより短いスキーマ名にはブランクが埋め込まれ、8 バイトの名前としてカタログに保管されます。
表 2. 数値の制限値
説明 制限値
SMALLINT (短精度整数) の最小値 -32 768
SMALLINT (短精度整数) の最大値 +32 767
INTEGER (整数) の最小値 -2 147 483 648
INTEGER (整数) の最大値 +2 147 483 647
BIGINT (64 ビット整数) の最小値 -9 223 372 036 854 775 808
BIGINT (64 ビット整数) の最大値 +9 223 372 036 854 775 807
10 進数の精度の最大値 31
REAL 値の最大指数 (Emax) 38
REAL (実数) の最小値 -3.402E+38
REAL (実数) の最大値 +3.402E+38
REAL 値の最小指数 (Emin) -37
REAL (実数) の正の最大値 +1.175E-37
REAL (実数) の負の最大値 -1.175E-37
DOUBLE 値の最大指数 (Emax) 308
DOUBLE (倍精度) の最小値 -1.79769E+308
DOUBLE (倍精度) の最大値 +1.79769E+308
DOUBLE 値の最小指数 (Emin) -307
DOUBLE (倍精度) の正の最小値 +2.225E-307
DOUBLE (倍精度) の負の最大値 -2.225E-307
DECFLOAT(16) 値の最大指数 (Emax) 384
最小 DECFLOAT(16) 値1 -9.999999999999999E+384
最大 DECFLOAT(16) 値 9.999999999999999E+384
DECFLOAT(16) 値の最小指数 (Emin) -383
最小の正 DECFLOAT(16) 値 1.000000000000000E-383
最大の負 DECFLOAT(16) 値 -1.000000000000000E-383
DECFLOAT(34) 値の最大指数 (Emax) 6144
最小 DECFLOAT(34) 値1 -9.999999999999999999999999999999999E+6144
最大 DECFLOAT(34) 値 9.999999999999999999999999999999999E+6144
DECFLOAT(34) 値の最小指数 (Emin) -6143
最小の正 DECFLOAT(34) 値 1.000000000000000000000000000000000E-6143
最大の負 DECFLOAT(34) 値 -1.000000000000000000000000000000000E-6143
注:
  1. 正規の 10 進浮動小数点数には限界があります。 有効な 10 進浮動小数点値には、特殊値 NAN、-NAN、SNAN、-SNAN、INFINITY、および -INFINITY が含まれます。 加えて、有効な値には非正規数が含まれます。

    非正規数は、調整された指数が Emin よりも小さいゼロ以外の数値です。 非正規数では、指数の最小値は Emin - (precision-1) で、これを Etiny といいます。ここで、precision は処理精度 (16 または 34) です。 すなわち、非正規数では数値の範囲が、DECFLOAT(16) では 15 桁、DECFLOAT(34) では 33 桁、ゼロに近い側にそれぞれ広がります。 非正規数は、その最大桁数が処理精度 (16 または 34) よりも小さいという点で正規の数と異なっています。 10 進浮動小数点数は、正規の数を表現する際と同じほど正確には非正規数を表現することができません。 DECFLOAT(34) の正の最小非正規数は 1x10-6176 で、これは 1 桁しかありません。 一方、DECFLOAT(34) の正の最小正規数は 1.000000000000000000000000000000000x10-6143 であり、これは 34 桁あります。 DECFLOAT(16) の正の最小非正規数は 1x10-398 です。

表 3. ストリングの制限値
説明 制限値
CHAR の最大長 (バイト単位) 254
VARCHAR の最大長 (バイト単位) 32 672
LONG VARCHAR の最大長 (バイト単位)1 32 700
CLOB の最大長 (バイト単位) 2 147 483 647
シリアライズ XML の最大長 (バイト単位) 2 147 483 647
GRAPHIC の最大長 (2 バイト文字単位) 127
VARGRAPHIC の最大長 (2 バイト文字単位) 16 336
LONG VARGRAPHIC の最大長 (2 バイト文字単位)1 16 350
DBCLOB の最大長 (2 バイト文字単位) 1 073 741 823
BLOB の最大長 (バイト単位) 2 147 483 647
文字定数の最大長 32 672
GRAPHIC 定数の最大長 16 336
連結後の文字ストリングの最大長 2 147 483 647
連結後の GRAPHIC ストリングの最大長 1 073 741 823
連結後のバイナリー・ストリングの最大長 2 147 483 647
16 進定数の最大桁数 32 672
実行時の構造化タイプ列オブジェクトの最大インスタンス (ギガバイト単位) 1
カタログ・コメントの最大サイズ (バイト単位) 254
注:
  1. データ・タイプ LONG VARCHAR と LONG VARGRAPHIC は、非推奨になっており、将来のリリースで除去される可能性があります。
表 4. XML 制限
説明 制限値
XML 文書の最大の深さ (レベル数) 125
XML スキーマ文書の最大サイズ (バイト単位) 31 457 280
表 5. 日付/時刻の制限値
説明 制限値
DATE (日付) の最小値 0001-01-01
DATE (日付) の最大値 9999-12-31
TIME (時刻) の最小値 00:00:00
TIME (時刻) の最大値 24:00:00
TIMESTAMP (タイム・スタンプ) の最小値 0001-01-01-00.00.00.000000000000
TIMESTAMP (タイム・スタンプ) の最大値 9999-12-31-24.00.00.000000000000
タイム・スタンプの精度の最小値 0
タイム・スタンプの精度の最大値 12
表 6. データベース・マネージャーの制限値
説明 制限値
アプリケーション
プリコンパイル済みプログラム内のホスト変数宣言の最大数3 ストレージ
ホスト変数値の最大長 (バイト単位) 2 147 483 647
プログラムで宣言できるカーソルの最大数 ストレージ
作業単位で変更される行の最大数 ストレージ
一度にオープンできるカーソルの最大数 ストレージ
DB2 クライアント内のプロセス当たりの接続の最大数 512
トランザクション内の同時にオープンできる LOB ロケーターの最大数 4 194 304
SQLDA の最大サイズ (バイト単位) ストレージ
準備されるステートメントの最大数 ストレージ
バッファー・プール
32 ビット・リリースでのバッファー・プールの最大 NPAGES 1 048 576
64 ビット・リリースでのバッファー・プールの最大 NPAGES 2 147 483 647
すべてのバッファー・プール・スロットの最大合計サイズ (4K) 2 147 483 646
並行性
サーバーの同時ユーザーの最大数4 64 000
インスタンス当たりの並行ユーザーの最大数 64 000
データベース当たりの並行アプリケーションの最大数 60 000
インスタンス当たりの並行使用可能なデータベースの最大数 256
制約
表に対する制約の最大数 ストレージ
ユニーク (UNIQUE) 制約の列の最大数 (ユニーク索引によってサポートされる) 64
ユニーク (UNIQUE) 制約の列の結合後の最大長 (ユニーク索引によってサポートされる) (バイト単位)9 8192
外部キーで参照される列の最大数 64
外部キーで参照される列の結合後の最大長 (バイト単位)9 8192
チェック制約の指定の最大長 (バイト単位) 65 535
データベース
最大データベース・パーティション番号 999
索引
表の索引の最大数 32 767 またはストレージのサイズによる
索引キーの列の最大数 64
すべてのオーバーヘッドを含む索引キーの最大長7 9 indexpagesize/4
変数の索引キー部分の最大長 (バイト単位)8 1022 またはストレージのサイズによる
SMS 表スペース内のデータベース・パーティション当たりの索引の最大サイズ (テラバイト単位)7 64
REGULAR DMS 表スペース内のデータベース・パーティション当たりの索引の最大サイズ (ギガバイト単位)7 512
LARGE DMS 表スペース内のデータベース・パーティション当たりの索引の最大サイズ (テラバイト単位)7 64
XML データに対する索引 に対する索引の変数の索引キー部分の最大長 (バイト単位)7 pagesize/4 - 207
ログ・レコード
最大ログ・シーケンス番号 0xFFFF FFFE FFFF FFEF
モニター
同時に起動できるイベント・モニターの最大数 128
DB2 パーティション・ データベース環境で、同時にアクティブにできる GLOBAL イベント・モニターの最大数 32
ルーチン
LANGUAGE SQL を指定したプロシージャー中のパラメーターの最大数 32 767
PROGRAM TYPE MAIN を指定した外部プロシージャー中のパラメーターの最大数 32 767
PROGRAM TYPE SUB を指定した外部プロシージャー中のパラメーターの最大数 90
カーソルの値コンストラクター内のパラメーターの最大数 32 767
ユーザー定義関数のパラメーターの最大数 90
ルーチンのネスト・レベルの最大数 64
SQL パス内のスキーマの最大数 64
SQL パスの最大長 (バイト単位) 2048
セキュリティー
タイプ・セットまたはツリーのセキュリティー・ラベル・コンポーネント内のエレメントの最大数 64
タイプ配列のセキュリティー・ラベル・コンポーネント内のエレメントの最大数 65 535
セキュリティー・ポリシー内のセキュリティー・ラベル・コンポーネントの最大数 16
SQL
SQL ステートメントの最大全長 (バイト単位) 2 097 152
SQL ステートメントまたはビューで参照される表の最大数 ストレージ
SQL ステートメント中のホスト変数参照の最大数 32 767
ステートメント中の定数の最大数 ストレージ
選択リスト内のエレメントの最大数7 1012
WHERE または HAVING 節の述部の最大数 ストレージ
GROUP BY 節中の列の最大数7 1012
GROUP BY 節中の列の合計長の最大値 (バイト単位)7 32 677
ORDER BY 節中の列の最大数7 1012
ORDER BY 節中の列の合計長の最大値 (バイト単位)7 32 677
副照会ネストの最大レベル ストレージ
単一のステートメント中の副照会の最大数 ストレージ
挿入操作内の値の最大数7 1012
単一の更新操作中の SET 節の最大数7 1012
表とビュー
表の列の最大数 7 1012
ビュー内の列の最大数1 5000
ニックネームによって参照されるデータ・ソース表またはビューにある列の最大数 5000
分散キー内の列の最大数5 500
すべてのオーバーヘッドを含む行の最大長2 7 32 677
非パーティション表の、データベース・パーティション当たりの行の最大数 128 x 1010
データ・パーティションの、データベース・パーティション当たりの行の最大数 128 x 1010
REGULAR 表スペース内のデータベース・パーティション当たりの表の最大サイズ (ギガバイト単位)3 7 512
LARGE DMS 表スペース内のデータベース・パーティション当たりの表の最大サイズ (テラバイト単位)7 64
1 つの表のデータ・パーティションの最大数 32 767
表パーティション列の最大数 16
ユーザー定義行タイプのフィールドの最大数 1012
表スペース
表または表パーティションごとの LOB オブジェクトの最大サイズ (テラバイト単位) 4
表または表パーティションごとの LF オブジェクトの最大サイズ (テラバイト単位) 2
データベース内の表スペースの最大数 32 768
SMS 表スペース内の表の最大数 65 532
REGULAR DMS 表スペースの最大サイズ (ギガバイト単位)3 7 512
LARGE DMS 表スペースの最大サイズ (テラバイト単位)3 7 64
一時 DMS 表スペースの最大サイズ (テラバイト単位) 3 7 64
DMS 表スペース内の表オブジェクトの最大数6 表 7を参照してください。
自動ストレージ・データベース内のストレージ・パスの最大数 128
自動ストレージ・データベースに関連付けられているストレージ・パスの最大長 (バイト単位) 175
トリガー
トリガーのカスケード実行時の最大の深さ 16
ユーザー定義タイプ
構造化タイプ内の属性の最大数 4082
注:
  1. この最大値は、 CREATE VIEW ステートメントで結合を使うことによって達成できます。 そのようなビューからの選択は、 選択リスト内のエレメントの最大数の制限値によって制限されます。
  2. BLOB、CLOB、LONG VARCHAR、DBCLOB、 および LONG VARGRAPHIC の列の実際のデータは、このカウントには含まれません。 しかし、そのデータの格納場所についての情報のために、 行内に一定のスペースが確保されます。
  3. 示されている数値は、 アーキテクチャー上の制限値であり、近似値です。 実際の制限値はもっと小さい場合があります。
  4. 実際の値はデータベース・マネージャーの構成パラメーター max_connections および max_coordagents によって制御されます。
  5. これはアーキテクチャー上の制限値です。 実際上の制限値としては、 索引キーの列の最大数に関する制限値を使用する必要があります。
  6. 表 7 の脚注 1 を参照してください。
  7. ページ・サイズ固有の値については、表 7を参照してください。
  8. これには、 オーバーヘッドがすべて組み入れられており、 最も長い索引キーによってのみ制限されます (バイト単位)。 索引キー部分の数が増えるにつれて、 各キー部分の最大長も増加します。
  9. 索引オプションによっては、最大値がそれより小さな値になることもあります。
表 7. データベース・マネージャーのページ・サイズ固有の制限値
説明 4K ページ・サイズの制限値 8K ページ・サイズの制限値 16K ページ・サイズの制限値 32K ページ・サイズの制限値
DMS 表スペース内の表オブジェクトの最大数1 51 9712
53 2123
53 299 53 747 54 264
表の列の最大数 500 1012 1012 1012
すべてのオーバーヘッドを含む行の最大長 4005 8101 16 293 32 677
REGULAR 表スペース内のデータベース・パーティション当たりの表の最大サイズ (ギガバイト単位) 64 128 256 512
LARGE DMS 表スペース内のデータベース・パーティション当たりの表の最大サイズ (テラバイト単位) 8 16 32 64
すべてのオーバーヘッドを含む索引キーの最大長 (バイト単位) 1024 2048 4096 8192
SMS 表スペース内のデータベース・パーティション当たりの索引の最大サイズ (テラバイト単位) 8 16 32 64
REGULAR DMS 表スペース内のデータベース・パーティション当たりの索引の最大サイズ (ギガバイト単位) 64 128 256 512
LARGE DMS 表スペース内のデータベース・パーティション当たりの索引の最大サイズ (テラバイト単位) 8 16 32 64
通常 DMS 表スペース中の最大サイズ (ギガバイト単位) 64 128 256 512
LARGE DMS 表スペースの最大サイズ (テラバイト単位) 8 16 32 64
一時 DMS 表スペースの最大サイズ (テラバイト単位) 8 16 32 64
選択リスト内のエレメントの最大数 5004 1012 1012 1012
GROUP BY 節中の列の最大数 500 1012 1012 1012
GROUP BY 節中の列の合計長の最大値 (バイト単位) 4005 8101 16 293 32 677
ORDER BY 節中の列の最大数 500 1012 1012 1012
ORDER BY 節中の列の合計長の最大値 (バイト単位) 4005 8101 16 293 32 677
挿入操作内の値の最大数 500 1012 1012 1012
単一の更新操作中の SET 節の最大数 500 1012 1012 1012
REGULAR 表スペースのページ当たりの最大レコード数 251 253 254 253
LARGE 表スペースのページ当たりの最大レコード数 287 580 1165 2335
注:
  1. 表オブジェクトには、表データ、 索引、LONG VARCHAR 列、VARGRAPHIC 列、および LOB 列が組み入れられます。 表データと同じ表スペース中にある表オブジェクトは、 制限値に対して余分のオブジェクトとしてカウントされません。 しかし、表データとは異なる表スペースにある各表オブジェクトは、 表オブジェクトがある表スペース中の表当たりの表オブジェクト・タイプの制限値に対して、 実際に 1 個のオブジェクトとしてカウントされます。
  2. エクステント・サイズが 2 ページの時点。
  3. エクステント・サイズが 2 ページ以外のサイズの時点。
  4. システム一時表スペースが 4KB でデータがソート・バッファーにオーバーフローした場合だけ、エラーが生成されます。結果セットがメモリーに収まる場合は、エラーにはなりません。