インデクスの格納ページ数の計算方法について説明します。
(a) 計算式中で使用する変数
計算式中で使用する変数を説明します。
- PGSZ:インデクス用DBエリアのページ長(単位:バイト)
- pf:CREATE INDEX文のPCTFREE句で指定する未使用領域の比率(単位:%)
- 未使用領域の比率を指定しない場合は,30%で計算してください。
- 作業表のインデクスの場合は,0%で計算してください。
- k:キー値の重複が255以下のキーの種類の個数
- kn:キー値の重複が255以下のキーの重複数の平均値
- dk:キー値の重複が256以上のキーの種類の個数
- dkn:キー値の重複が256以上のキーの重複数の平均値
- kl:DB格納キー長(単位:バイト)
- 「表3-5 インデクスのキー長一覧」によって算出された値をklbとし,次の計算式によって求めます
ただし,複数列インデクスのキー長klbは,「表3-5 インデクスのキー長一覧」の複数列インデクスの欄を基に全構成列のキー長を加算したものとなります。
(b) インデクスのキー長一覧
計算式中で使用するインデクスのキー長の一覧を次の表に示します。
表3-5 インデクスのキー長一覧
項番 | 分類 | データ型 | キー長(単位:バイト) |
---|
単一列インデクス | 複数列インデクス |
---|
固定長※1 | 可変長※2 |
---|
1 | 数データ | INTEGER | 4 | 4 | 4+a |
2 | SMALLINT | 2 | 2 | 2+a |
3 | DECIMAL(m,n)※3 | ↓m÷2↓+1 | ↓m÷2↓+1 | ↓m÷2↓+1+a |
4 | 文字データ | CHARACTER(n) | n | n | n+a |
5 | VARCHAR(n) | d+a | - | d+a |
6 | 時刻印データ | TIMESTAMP(p) | 7+p÷2 | 7+p÷2 | 7+p÷2+a |
- (凡例)
- a:次に示すどれかの値
- 単一列インデクスの場合で,定義長が255バイト以下のときは1
- 単一列インデクスの場合で,定義長が256バイト以上のときは2
- 複数列インデクスの場合で,インデクスを構成する列の合計が255バイト以下のときは1
- 複数列インデクスの場合で,インデクスを構成する列の合計が256バイト以上のときは2
- 複数列インデクスを構成する列の長さについては,マニュアル「TP1/EE/Extended Data Cache SQLプログラミング」の「CREATE INDEX(インデクスの定義)」の「複数列インデクスを構成する列の長さ」を参照してください。
- d:実際のデータ長
- m,n:正の整数
- p:0,2,4,または6
- -:該当しません。
- 注※1
- 構成列が固定長の列だけのインデクスのデータ長を示します。構成列中にナル値を含むキーの場合には,全体のキー長を算出するときに,構成列数分のキー長を合計し,さらにインデクス構成列数を加算してください。
- 注※2
- 構成列に可変長の列を含むインデクスのデータ長を示します。全体のキー長を算出する際には,構成列数分のキー長の合計に,インデクスを構成する列の合計が255バイト以下のときは1を,256バイト以上のときは2を加算します。
- 複数列インデクスを構成する列の長さについては,マニュアル「TP1/EE/Extended Data Cache SQLプログラミング」の「CREATE INDEX(インデクスの定義)」の「複数列インデクスを構成する列の長さ」を参照してください。
- 注※3
- 全体のけた数がmけたで,小数点以下のけた数がnけたの固定小数点数を示します。mを省略した場合は29が仮定されます。
(c) インデクスの格納ページ数
次に示す計算式から,1インデクスページ当たりの平均キー格納件数pkを求めてください。
計算式
次に,インデクスの格納ページ数を次に示す計算式から求めてください。
Piは計算式1に示す漸化式から求めます。Pn=1になるまでPi+1の計算式を繰り返し,その計算結果の総計を求めます。
Qは計算式2から算出します。
Rは,インデクスページごとにキーの重複数やキー長にばらつきがある場合には1.2~1.5とし,平均値近辺に収束している場合には1とします。
計算式1
計算式2