SQL および XML の制限値

このトピックの表では、SQL と XML の制限について説明します。 最も制限が厳しい場合に準拠することによって、 容易に移植できるアプリケーション・プログラムを設計することができます。

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

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

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

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

表 1. ID の長さの制限値
説明 バイト単位の最大値
別名 128
属性名 128
AUDIT POLICY NAME 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
索引仕様名 128
ラベル名 128
名前空間の URI (Uniform Resource Identifier) 1000
ニックネーム 128
パッケージ名 128
パッケージ・バージョン ID 64
パラメーター名 128
データ・ソースにアクセスするパスワード 32
プロシージャー名 (Procedure name) 128
役割名 128
セーブポイント名 128
スキーマ名2,3 128
セキュリティー・ラベル・コンポーネント名 128
セキュリティー・ラベル名 128
セキュリティー・ポリシー名 128
シーケンス名 128
サーバー名 (データベース別名) 8
特定名 128
SQL 条件名 128
SQL 変数名 128
ステートメント名 128
ストレージ・グループ 128
テーブル名 128
表スペース名 18
トランスフォーム・グループ名 18
トリガー名 128
Trusted Context Name 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 の最大長 (バイトまたは OCTETS 単位) 255
CHAR の最大長 (CODEUNITS32 単位) 63
VARCHAR の最大長 (バイト数または OCTETS)2 32,672
VARCHAR の最大長 ( CODEUNITS32)2 8168
LONG VARCHAR の最大長 (バイト単位)1 32,700
CLOB の最大長 (バイトまたは OCTETS 単位) 2,147,483,647
CLOB の最大長 (CODEUNITS32 単位) 536,870,911
シリアライズ XML の最大長 (バイト単位) 2,147,483,647
GRAPHIC の最大長 (2 バイト文字または CODEUNITS16 単位) 127
GRAPHIC の最大長 (CODEUNITS32 単位) 63
VARGRAPHIC の最大長 (2 バイト文字数または CODEUNITS16)2 16,336
VARGRAPHIC の最大長 (CODEUNITS32 単位) 8168
LONG VARGRAPHIC の最大長 (2 バイト文字単位)1 16,350
DBCLOB の最大長 (2 バイト文字または CODEUNITS16 単位) 1,073,741,823
DBCLOB の最大長 (CODEUNITS32 単位) 536,870,911
BINARY の最大長 (バイト単位) 255
VARBINARY の最大長 (バイト単位)2 32,672
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 は、非推奨になっており、将来のリリースで除去される可能性があります。
  2. カラム・オーガナイズ 表のページ・サイズ固有のストリング制限については、 表 4を参照してください。
表 4. カラム・オーガナイズ表のページ・サイズ固有のストリング制限
説明 4K ページ・サイズ制限 8K ページ・サイズ制限 16K ページ・サイズ制限 32K ページ・サイズ制限
VARCHAR の最大長 (バイト単位) 3920 8016 16,208 32,592
VARCHAR の最大長 (CODEUNITS32 単位) 980 2004 4052 8148
VARGRAPHIC の最大長 (バイト単位) 1960 4008 8104 16,296
VARBINARY の最大長 (バイト単位) 3920 8016 16,208 32,592
注: カラム・オーガナイズ 表には、ページ当たり 176 バイトのオーバーヘッドがあります。
表 5. カラム・オーガナイズ表のページ・サイズ固有のストリング制限。 これらの制限は、ALTER TABLE を使用して列の長さを増やす場合にのみ適用されます
説明 4K ページ・サイズ制限 8K ページ・サイズ制限 16K ページ・サイズ制限 32K ページ・サイズ制限
VARCHAR の最大長 (バイト単位) 3888 7984 16,176 32,560
VARGRAPHIC の最大長 (バイト単位) 1944 3992 8088 16,280
表 6. XML 制限
説明 制限値
XML 文書の最大の深さ (レベル数) 125
XML スキーマ文書の最大サイズ (バイト単位) 31,457,280
コマンド行プロセッサーによって返される XML 文書の最大長 (文字数) 4000
表 7. 日付/時刻の制限値
説明 制限値
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
表 8. データベース・マネージャーの制限値
カテゴリー 説明 制限値
アプリケーション プリコンパイル済みプログラム内のホスト変数宣言の最大数3 ストレージ。 この数は今後のバージョンで少なくなる可能性があります。 10000 未満にしておくことを勧めします。
ホスト変数値の最大長 (バイト単位) 2,147,483,647
プログラムで宣言できるカーソルの最大数 ストレージ
作業単位で変更される行の最大数 ストレージ
一度にオープンできるカーソルの最大数 ストレージ
データベース・クライアント内のプロセス当たりの接続の最大数 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
Db2 pureScale® 環境での最大 メンバー 128
索引 表の索引の最大数 32,767 またはストレージ
索引キーの列の最大数 64
すべてのオーバーヘッドを含む索引キーの最大長6 8 indexpagesize/4
変数の索引キー部分の最大長 (バイト単位)7 1022 またはストレージのサイズによる
SMS 表スペース内のデータベース・パーティション当たりの索引の最大サイズ (テラバイト単位)6 64
REGULAR DMS 表スペース内のデータベース・パーティション当たりの索引の最大サイズ (ギガバイト単位)6 512
LARGE DMS 表スペース内のデータベース・パーティション当たりの索引の最大サイズ (テラバイト単位)6 64
XML 上の索引データの可変索引キー部分の最大長 (バイト単位)7 pagesize/4 から 207
ログ・レコード 最大ログ・シーケンス番号 0xFFFF FFFF FFFF FFFF
モニター 同時に起動できるイベント・モニターの最大数 128
パーティション・データベース環境で、同時にアクティブにできる 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
ステートメント中の定数の最大数 ストレージ
選択リスト内のエレメントの最大数6

2048

WHERE または HAVING 節の述部の最大数 ストレージ
GROUP BY 節中の列の最大数6

2048

GROUP BY 節中の列の合計長の最大値 (バイト単位)6 32,677
ORDER BY 節中の列の最大数6

2048

ORDER BY 節中の列の合計長の最大値 (バイト単位)6 32,677
副照会ネストの最大レベル ストレージ
単一のステートメント中の副照会の最大数 ストレージ
挿入操作内の値の最大数6

2048

ストレージ・ グループ データベース内のストレージ・グループの最大数 256
ストレージ・グループ内のストレージ・パスの最大数 128
ストレージ・パスの最大長 (バイト単位) 175
表とビュー 表の列の最大数6 10

2048

ビュー内の列の最大数1 5000
ニックネームによって参照されるデータ・ソース表またはビューにある列の最大数 5000
分散キー内の列の最大数5 500
すべてのオーバーヘッドを含む行の最大長 2 6 9 32,677
非パーティション表の、データベース・パーティション当たりの行の最大数 128 x 1010
データ・パーティションの、データベース・パーティション当たりの行の最大数 128 x 1010
REGULAR 表スペース内のデータベース・パーティション当たりの表の最大サイズ (ギガバイト単位)3 6 512
LARGE DMS 表スペース内のデータベース・パーティション当たりの表の最大サイズ (テラバイト単位)6 64
1 つの表のデータ・パーティションの最大数 32,767
表パーティション列の最大数 16
ユーザー定義行データ・タイプのフィールドの最大数 1012
表スペース 表または表パーティションごとの LOB オブジェクトの最大サイズ (テラバイト単位) 4
表スペース内の XML オブジェクトの最大サイズは、表スペースの最大サイズと同じです。 表 9を参照してください。  
表または表パーティションごとの LF オブジェクトの最大サイズ (テラバイト単位) 2
データベース内の表スペースの最大数 32,768
SMS 表スペース内の表の最大数 65,532
REGULAR DMS 表スペースの最大サイズ (ギガバイト単位)3 6 512
LARGE DMS 表スペースの最大サイズ (テラバイト単位)3 6 64
一時 DMS 表スペースの最大サイズ (テラバイト単位) 3 6 64
DMS 表スペース内の表オブジェクトの最大数 表 9 を参照してください。
トリガー トリガーのカスケード実行時の最大の深さ 16
ユーザー定義タイプ 構造化タイプ内の属性の最大数 4082
ワークロード・マネージャー データベース当たりのユーザー定義サービス・スーパークラスの最大数 64
サービス・スーパークラス当たりのユーザー定義サービス・サブクラスの最大数 61
オープン・ファイル数 単一の Db2 インスタンスによって開かれるファイルの最大数。 これには、インスタンス内のすべてのデータベースの表スペース・コンテナー・ファイルとトランザクション・ログ・ファイルが含まれますが、それらに限られません。 さらに、オペレーティング・システムによって下限が設定される場合があります。 65534
注:
  1. この最大値は、CREATE VIEW ステートメントで結合を使うことによって達成できます。 そのようなビューからの選択は、 選択リスト内のエレメントの最大数の制限値によって制限されます。
  2. BLOB、CLOB、LONG VARCHAR、DBCLOB、および LONG VARGRAPHIC の列の実際のデータは、このカウントには含まれません。 しかし、そのデータの格納場所についての情報のために、 行内に一定のスペースが確保されます。
  3. 示されている数値は、アーキテクチャー上の制限値であり、近似値です。 実際の制限値はもっと小さい場合があります。
  4. 実際の値はデータベース・マネージャーの構成パラメーター max_connections および max_coordagents によって制御されます。
  5. これはアーキテクチャー上の制限値です。 実際上の制限値としては、 索引キーの列の最大数に関する制限値を使用する必要があります。
  6. ページ・サイズ固有の値については、 表 9を参照してください。
  7. これには、 オーバーヘッドがすべて組み入れられており、 最も長い索引キーによってのみ制限されます (バイト単位)。 索引キー部分の数が増えるにつれて、 各キー部分の最大長も増加します。
  8. 索引オプションによっては、最大値がそれより小さな値になることもあります。
  9. extended_row_sz データベース構成パラメーターが ENABLE に設定されていて、表に VARCHAR 列、VARBINARY 列、または VARGRAPHIC 列がある場合、最大行サイズは 1,048,319 バイトです (すべてのオーバーヘッドを含む)。
  10. データベース・マネージャーによって内部的に生成された列を考慮に入れる必要があります。 RANDOM_DISTRIBUTION_KEY は、1 つの例です。これは、生成別ランダム方式を使用するランダム分散表に対して作成されます。
表 9. データベース・マネージャーのページ・サイズ固有の制限値
説明 4K ページ・サイズ制限 8K ページ・サイズ制限 16K ページ・サイズ制限 32K ページ・サイズ制限
DMS 表スペース内の表オブジェクトの最大数1 51,9712
53,2123
53,299 53,747 54,264
行オーガナイズ 表の列の最大数 500 1012 1012

2048

カラム・オーガナイズ 表の列の最大数

2048

2048

2048

2048

行オーガナイズ 表の 行の最大長 (すべてのオーバーヘッドを含む) 4005 8101 16,293 32,677
カラム・オーガナイズ 表の行の最大長 (すべてのオーバーヘッドを含む) 1,048,319 1,048,319 1,048,319 1,048,319
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
データベース・パーティション当たりの REGULAR DMS 表スペースの最大サイズ (ギガバイト単位) 64 128 256 512
LARGE DMS 表スペースの最大サイズ (テラバイト単位) 8 16 32 64
一時 DMS 表スペースの最大サイズ (テラバイト単位) 8 16 32 64
選択リスト内のエレメントの最大数 5004 10125 10125

2048

GROUP BY 節中の列の最大数 500 10125 10125

2048

GROUP BY 節中の列の合計長の最大値 (バイト単位) 4005 8101 16,293 32,677
ORDER BY 節中の列の最大数 500 10125 10125

2048

ORDER BY 節中の列の合計長の最大値 (バイト単位) 4005 8101 16,293 32,677
挿入操作内の値の最大数 500 10125 10125

2048

単一の更新操作中の SET 節の最大数 500 10125 10125

2048

REGULAR 表スペースのページ当たりの最大レコード数 251 253 254 253
LARGE 表スペースのページ当たりの最大レコード数 287 580 1165 2335
表スペース内の XML オブジェクトの最大サイズ 64 128 256 512
注:
  1. 表オブジェクトには、表データ、 索引、LONG VARCHAR 列、VARGRAPHIC 列、および LOB 列が組み入れられます。 表データと同じ表スペース中にある表オブジェクトは、 制限値に対して余分のオブジェクトとしてカウントされません。 しかし、表データとは異なる表スペースにある各表オブジェクトは、 表オブジェクトがある表スペース中の表当たりの表オブジェクト・タイプの制限値に対して、 実際に 1 個のオブジェクトとしてカウントされます。
  2. エクステント・サイズが 2 ページの時点。
  3. エクステント・サイズが 2 ページ以外のサイズの時点。
  4. システム一時表スペースが 4KB でデータがソート・バッファーにオーバーフローした場合だけ、エラーが生成されます。 結果セットがメモリーに収まる場合は、エラーにはなりません。
  5. カラムナ表の場合には、最大で 2048 までの可能性があります。