ページとは、Symfoware/RDBがデータベースに対してI/Oを行うときの単位です。また、動作環境ファイルの実行パラメタDSO_LOCKにページ排他を指定せず、R_LOCKにNOを指定した場合は、ページがロックの単位となります。ページのサイズは1、2、4、8、16、32キロバイトの6種類からDSI単位に選択できます。指定できるページサイズは、格納構造ごとに異なります。以下に格納構造ごとのページ長設定の注意事項を示します。
構造 | ページサイズの注意事項 |
---|---|
SEQUENTIAL | 表の1行に対応するデータを1ページに収めます。ただし、BLOB型のデータは除きます。 |
RANDOM | 表の1行に対応するデータを1ページに収めます。 平均入出力回数(ページ内のデータ数に依存)を考慮して、プライム部のページ長を設定する必要があります。 |
OBJECT | ページ長には必ず32を指定します。 表の1行に対応するデータを1ページに収めます。 |
BTREE | インデックスのキーと実表データとの対応情報の組の値を、インデックス部およびデータ部の1ページに2件以上収めます。ページの使用率を高めるためには、余裕をもったページ長の指定が必要です。 ページスプリットの頻発は処理効率悪化となることから、データの追加が多いような場合、データ部のページ内に収まるデータ数が多くなるように考慮する必要があります。 |
適切にページ長を設定することにより、柔軟な業務が適用できる反面、いくつのページサイズが最適なのか迷うこともあります。主な選択基準は以下の通りですが、一概に判断することは困難です。
要素 | ページ長 | 説明 |
---|---|---|
I/O効率 | 悪い ←---→ 良い | 参照系主体の場合は大きい方が適している。 |
格納効率 | 低い ←---→ 高い | 同一ページ内アクセス時は大きい方が有利になる。 |
排他競合 | 少ない ←-→ 多い | ページ排他では、以下のことがいえる。 参照系主体の場合、大きい方が適している 競合が多い場合、小さい方が適している 行排他では競合が行となるためページ長に依存しない。トータル的に大きい方が適している。 |
一般的にページサイズが大きいほどI/O効率が良く、ページサイズが小さいほど、排他待ちの発生は少なくなります。
ページ長を決定する場合は、選択した格納構造、格納効率、インデックスの高さ、共用バッファのチューニングとの関係、データベースのアクセス方式、ロック単位、およびトランザクションモード(独立性水準)を総合的に評価し、その表、そのインデックスにあった長さを採用してください。しかし、多くの場合、これらの要素をすべて考えたうえで決めることはまれであり、まず、以下の観点から簡単に決められます。
資源 | 運用形態表 | 設定の目安 |
---|---|---|
表(注1) | 参照系主体 | 16KB~32KB |
更新系主体 | 4KB~8KB | |
参照・更新同程度 | 8KB~16KB | |
インデックス(注2) | 参照系主体 | BASE部:16KB~32KB |
更新系主体 | BASE部:8KB~16KB | |
参照・更新同程度 | BASE部:8KB~16KB |
注1) 表の1行に対応するデータを、1ページ内に収めます。ただし、BLOBは除きます。
注2) インデックスのキーと実表を示す情報の組の値を、1ページに2件以上収めます。
備考. 排他の単位がページロックの場合です。