スケーラブルデータベースサーバ HiRDB Version 8 システム導入・設計ガイド(UNIX(R)用)
クライアント環境定義でPDSQLOPTLVLオペランドを指定するか,HiRDBシステム定義でpd_optimize_levelオペランドを指定(又は省略)した場合,適用条件を満たすSQLを実行すると,グループ分け高速化機能が働きます。このとき,HiRDBはクライアント環境定義のPDAGGRオペランドの値に基づいてプロセス固有メモリを確保します。確保するメモリサイズを次に示します。
e+↑d÷4↑×4+↑(17+4×a+4×b+c+d)÷4↑×4×(N+1) (単位:バイト) |
表16-4 グループ化するときの列の長さ及び集合関数の演算領域の長さ
| 列のデータ型 | グループ化する列の列長 | 集合関数の演算領域長※1 |
|---|---|---|
| INTEGER | 4 | 6 |
| SMALLINT | 2 | 4※2 |
| DECIMAL(p,s) | ↑(p+1)÷2↑ | ↑(p+7)÷2↑※3 |
| FLOAT | 8 | 10 |
| SMALLFLT | 4 | 6 |
| INTERVAL YEAR TO DAY | 5 | 8 |
| INTERVAL HOUR TO SECOND | 4 | 6 |
| CHAR(n) | n | n+3 |
| VARCHAR(n) | n+2 | n+5 |
| NCHAR(n) | 2×n | 2×n+2 |
| NVARCHAR(n) | 2×n+2 | 2×n+4 |
| MCHAR(n) | n | n+3 |
| MVARCHAR(n) | n+2 | n+5 |
| DATE | 4 | 6 |
| TIME | 3 | 6 |
| BLOB(n) | − | − |
| BINARY(n) | n+2 | n+5 |
列ごとのデータ抑制を指定(CREATE TABLEの列定義にSUPPRESSを指定)した表に対してアクセスするときに使用するメモリサイズは,次に示す計算式で求められます。
| a+128 (単位:バイト) |
クライアント環境定義でPDADDITIONALOPTLVLオペランドを指定するか,HiRDBシステム定義でpd_additional_optimize_levelオペランドを指定すると,SQL拡張最適化オプションが働きます。このSQL拡張最適化オプションで,「ハッシュジョイン,副問合せのハッシュ実行の適用(APPLY_HASH_JOIN)」を指定した場合,表の結合又は副問合せのSQLを実行すると,次に示すメモリサイズのプロセス固有領域を確保します。
| ●32ビットモードの場合 a Σ(13×1024+6×1024×b+c) i=1 ●64ビットモードの場合 a Σ (13×1024+7×1024×b+c) i=1 (単位:バイト) |
| ハッシュ表行数の目安 | 適用されるハッシュジョイン処理 | bの値 | |
|---|---|---|---|
| 1500以内 | 一括ハッシュジョイン | 0.5 | |
| 1500×(バケット分割数÷3)以内 | バケット分割 ハッシュジョイン |
1レベルバケット分割 | 1 |
| 1500×(バケット分割数÷3)2以内 | 2レベルバケット分割 | 2 | |
| 1500×(バケット分割数÷3)2を超える場合 | 3レベルバケット分割 | 3 | |
| ハッシュ表最大行長 | ハッシュ表ページ長(単位:バイト) |
|---|---|
| 0〜1012 | 4096 |
| 1013〜2036 | 8192 |
| 2037〜4084 | 16384 |
| 4085〜16360 | 32768 |
| 16361〜32720 | ↑(ハッシュ表最大行長+48)÷2048↑×2048 |
pd_pageaccess_modeオペランドを省略した場合又はSNAPSHOTを指定した場合,スナップショット方式を適用するSQL文を実行すると,データベース検索時のページアクセス方式にスナップショット方式を使用します。このとき,表又はインデクスの格納RDエリアのページサイズに基づいて,動的に次に示すメモリサイズのプロセス固有領域を確保します。
| a×2 (単位:バイト) |
先頭からn行の検索結果を取得する機能を使用すると,検索結果の先頭(又はユーザが指定した先頭からのオフセット行数分読み飛ばした位置)からn行取得できます。
LIMIT句に指定した行数が1以上で,(オフセット行数+LIMIT句に指定した行数)の値が32,767以下の場合,(オフセット行数+LIMIT句に指定した行数)以内に入り得る行をメモリに保持します。確保するプロセス固有領域のメモリサイズは,次に示す計算式で求められます。なお,(オフセット行数+LIMIT句に指定した行数)の値が32,768以上になる場合は作業表を作成するため,「19. 作業表用ファイルの容量の見積もり」を参照してください。
| {100+(a+2)×(オフセット行数+LIMIT句に指定した行数)}×b (単位:バイト) |
| m Σ(Ai)+2×m+4+c i=1 (単位:バイト) |
| 1+UNION [ALL]句指定数 |
探索条件にインデクス型プラグイン専用関数を指定したSQL文の実行時に確保するプロセス固有領域のメモリサイズは,次に示す計算式で求められます。
| a×500+(20+6)×800+16 (単位:バイト) |
| m Σ(Ai)+4×(m+2)+12+4+8 i=1 (単位:バイト) |
拡張SQLエラー情報出力機能を使用した場合,次のときにプロセス固有領域を確保します。
| ●32ビットモードの場合 (16+16×m)+a ●64ビットモードの場合 (24+24×m)+a (単位:バイト) |
表16-5 埋込み変数又は?パラメタのデータ長
| データ型 | 列長(標識変数なし) | 列長(標識変数あり,埋込み変数又は?パラメタ) |
|---|---|---|
| INTEGER | 4 | 6 |
| SMALLINT | 2 | 4 |
| DECIMAL(p,s) | ↑(p+1)÷2↑ | ↑(p+5)÷2↑ |
| FLOAT | 8 | 10 |
| SMALLFLT | 4 | 6 |
| INTERVAL YEAR TO DAY | 5 | 7 |
| INTERVAL HOUR TO SECOND | 4 | 6 |
| CHAR(n) | n | n+2 |
| VARCHAR(n) | n+2 | n+4 |
| NCHAR(n) | 2×n | 2×n+2 |
| NVARCHAR(n) | 2×n+2 | 2×n+4 |
| MCHAR(n) | n | n+2 |
| MVARCHAR(n) | n+2 | n+4 |
| DATE | 4 | 6 |
| TIME | 3 | 5 |
| BLOB(n) | n+4 | n+8 |
| TIMESTAMP(p) | 7+(p÷2) | 9+(p÷2) |
| BINARY(n) | n+4 | n+8 |
| SQL文長+20 (単位:バイト) |
定義系SQLのCREATE INDEXで部分構造インデクスを定義する場合に確保するプロセス固有領域は,次に示す計算式で求められます。
| (インデクスキー長※×100+64) (単位:バイト) |
操作系SQLのINSERT,UPDATE,又はDELETEで部分構造インデクスを定義した表を更新する場合に確保するプロセス固有領域は,次に示す計算式で求められます。
| (インデクスキー長※1×100+64+128)+Σ(インデクスキー長+128)※2 (単位:バイト) |
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.