 |
PSQL Programmer's Guide (v11) |
 |
|
ファイル サイズの予測 (トランザクショナル インターフェイス)
ページ数を予測できることから、ファイルを格納するのに必要なバイト数を見積もることが可能です。ただし、トランザクショナル インターフェイスは動的にページを操作するため、式を用いる場合、これらの式はファイル サイズを概算するだけであることを考慮してください。
メモ
以下の説明とファイル サイズを決定するための式は、データ圧縮を使用するファイルには適用されません。このようなファイルのレコード長は、各レコードに含まれる繰り返し文字の数によって異なるからです。
これらの式は、必要な最大記憶域に基づいていますが、一度に 1 つのタスクでしか、ファイルに対してレコードの更新や挿入を行わないことを前提としています。同時並行トランザクション中に、複数のタスクでファイルに対してレコードを更新したり挿入したりする場合には、ファイル サイズが増加します。
またこれらの式は、ファイルからまだレコードが削除されていないことを前提としています。ファイル内のレコードをいくつ削除しても、ファイルのサイズは変わりません。トランザクショナル インターフェイスは、削除されたレコードが占有していたページの割り当てを解除しません。むしろ、トランザクショナル インターフェイスは新しいレコードがファイルに挿入されるたびにそれらのページを再利用し、その後で新しいページを割り当てます。
計算の最終結果に小数値が含まれている場合は、小数値を次に大きい整数に切り上げます。
ファイルのサイズを見積もるには、以下の手順で行います。
- 以下の式を使用して、データ ページの数を算出します。
データ ページ数 =
#r /
(
(PS - FO) / PRL
)
- この場合、
- #r :レコード数
- PS:ページ サイズ
- FO:ファイル オーバーヘッド
- PRL:物理レコード長
- 物理レコード長を求めるには、表 19 を参照してください。
- ファイル オーバーヘッドの算出については、表 17 および表 18 を参照してください。
- 以下の式のうちの 1 つを使用して、定義されたキーごとにインデックス ページ数を計算します。
- 重複を許さないキー、または繰り返し重複キーを許すキーごとに、
インデックス ページ数 =
(
#r /
(
(PS - KO) / (KL + 8)
)
)
* 2
- この場合、
- #r :レコード数
- PS:ページ サイズ
- KO:キー オーバーヘッド
- KL:キー長
- リンク重複キーを許すキーごとに、
インデックス ページ数 =
(
#UKV /
(
(PS - KPO) / (KL + 12)
)
)
* 2
- この場合、
- UKV:一意のキー値
- PS:ページ サイズ
- KPO:キー ページ オーバーヘッド
- KL:キー長
- B ツリー インデックス構造は、インデックス ページの使用率 50% 以上を保証します。したがって、インデックス ページの計算では、必要なインデックス ページの最小数に 2 をかけた値が最大サイズになります。
- ファイルに可変長レコードが含まれている場合は、ファイル内の可変ページ数を計算し、その数を前の手順までの合計に加算します。そのために、以下の式を使用します。
可変ページ数 =
(AVL * #r) /
(
1 - (FST + (VPO / PS) )
)
- この場合、
- AVL:標準的なレコードの可変部分の平均の長さ
- #r :レコード数
- FST:空きスペース スレッショルド
- VPO:可変ページ オーバーヘッド
- PS:ページ サイズ
メモ
可変長部分が同じページに収まるレコードの平均数を予測することは困難であるため、非常に大雑把な可変ページ数の予測しか得られません。
- 前の手順までで求められた合計に対して、以下を加算します。
使用するオルタネート コレーティング シーケンス ページごとに 1 ページ
ファイルに RI の制約がある場合は参照整合性(RI)ページに 1 ページ
- この新しい合計は、ファイルに格納される論理ページの概算総数を表します。
- ページ アロケーション テーブル(PAT)ページ数を計算し、その数を前の手順で求めた概算論理ページ数に加算します(PAT ページの詳細については、ページ プリアロケーションを参照してください)。
- どのファイルにも 2 ページ以上の PAT ページがありますが、ファイル内の PAT ページ数を計算するには、以下の式のいずれかを使用します。
- 8.x より前のファイル形式の場合:
PAT ページ数 =
((手順 1~3 のページの合計) * 4)
/
((ページ サイズ - オーバーヘッドの 8 バイト) * 2)
- 8.x 以降のファイル形式の場合:
PAT ページ数 =
((手順 1~3 のページの合計) * 6)
/
((ページ サイズ - オーバーヘッドの 20 バイト) * 2)
- 前の手順までで求められた合計に対して、FCR ページの 2 ページを加算します。8.x 以降のファイル形式を使用している場合は、DIR(ディレクトリ)ページの 2 ページも加算します。
- Pervasive PSQL のファイル形式バージョンによって、FCR、DIR、および PAT ページのページ サイズは、通常のデータ、キー、および可変ページ用のページ サイズとは異なっており、これがファイル サイズに影響します。通常のページ サイズに対する特殊なページのサイズについては次の表を参照してください。
表 24 ファイル形式ごとのページ サイズ
標準 ページ サイズ
|
ファイル形式 v6.x および 7.x
|
ファイル形式 8.x
|
ファイル形式 9.0 から 9.4
|
ファイル形式 9.5
|
ページ サイズ
|
ページ内のエントリ数
|
ページ サイズ
|
ページ内のエントリ数
|
ページ サイズ
|
ページ内のエントリ数
|
ページ サイズ
|
ページ内のエントリ数
|
512
|
2,048
|
320
|
2,048
|
320
|
2,048
|
320
|
N/A
|
N/A
|
1,024
|
2,048
|
320
|
2,048
|
320
|
2,048
|
320
|
4,096
|
480
|
1,536
|
3,072
|
480
|
3,072
|
480
|
3,072
|
480
|
N/A
|
N/A
|
2,048
|
4,096
|
640
|
4,096
|
640
|
4,096
|
640
|
4,096
|
480
|
2,560
|
5120
|
800
|
5,120
|
800
|
5,120
|
800
|
N/A
|
N/A
|
3,072
|
6,144
|
960
|
6,144
|
960
|
6,144
|
960
|
N/A
|
N/A
|
3,584
|
7,168
|
1,120
|
7,168
|
1,120
|
7,168
|
1,120
|
N/A
|
N/A
|
4,096
|
8,192
|
1,280
|
8,192
|
1,280
|
8,192
|
1,280
|
8,192
|
1,280
|
8,192
|
N/A
|
N/A
|
N/A
|
N/A
|
N/A
|
N/A
|
16,384
|
16,000
|
16,384
|
N/A
|
N/A
|
N/A
|
N/A
|
N/A
|
N/A
|
16,384
|
16,000
|
N/A は「適用外」を意味します。
|
- 最後に、ファイル内の未使用ページのプールの予測サイズを加算します。トランザクショナル データベース エンジンは、シャドウ ページングにそのプールを使用します。プールのサイズを計算するには、以下の式を使用します。
未使用ページのプールのサイズ = (キーの数 + 1)
- この式は、タスクがトランザクションの外部でのみ Insert、Update および Delete オペレーションを実行する場合に適用されます。タスクがトランザクション内でこれらのオペレーションを実行している場合は、トランザクションで予想される Insert、Update、および Delete オペレーションの平均数に、式で算定された非トランザクション数をかけます。同様に、タスクが同時並行トランザクションを実行している場合は、未使用ページのプールの予測サイズをさらに大きくする必要があります。
- ファイルに必要なページ数を計算した後、以下の式を使用して、ファイルを格納するために必要な最大バイト数を計算します。
バイト単位のファイル サイズ = 総ファイル ページ数 * ページ サイズ
 ページ サイズの選択 (トランザクショナル インターフェイス) |
 データベースの最適化 (トランザクショナル インターフェイス) |
|