PSQL Programmer's Guide (v11)

ファイル サイズの予測 (トランザクショナル インターフェイス)

ページ数を予測できることから、ファイルを格納するのに必要なバイト数を見積もることが可能です。ただし、トランザクショナル インターフェイスは動的にページを操作するため、式を用いる場合、これらの式はファイル サイズを概算するだけであることを考慮してください。


メモ

以下の説明とファイル サイズを決定するための式は、データ圧縮を使用するファイルには適用されません。このようなファイルのレコード長は、各レコードに含まれる繰り返し文字の数によって異なるからです。


これらの式は、必要な最大記憶域に基づいていますが、一度に 1 つのタスクでしか、ファイルに対してレコードの更新や挿入を行わないことを前提としています。同時並行トランザクション中に、複数のタスクでファイルに対してレコードを更新したり挿入したりする場合には、ファイル サイズが増加します。

またこれらの式は、ファイルからまだレコードが削除されていないことを前提としています。ファイル内のレコードをいくつ削除しても、ファイルのサイズは変わりません。トランザクショナル インターフェイスは、削除されたレコードが占有していたページの割り当てを解除しません。むしろ、トランザクショナル インターフェイスは新しいレコードがファイルに挿入されるたびにそれらのページを再利用し、その後で新しいページを割り当てます。

計算の最終結果に小数値が含まれている場合は、小数値を次に大きい整数に切り上げます。

ファイルのサイズを見積もるには、以下の手順で行います。

  1. 以下の式を使用して、データ ページの数を算出します。
    データ ページ数 =
       #r /
       
    ( (PS - FO) / PRL )
    この場合、
  2. 以下の式のうちの 1 つを使用して、定義されたキーごとにインデックス ページ数を計算します。
    重複を許さないキー、または繰り返し重複キーを許すキーごとに、
    インデックス ページ数 =
       
    ( #r /
       
    ( (PS - KO) / (KL + 8) ) ) * 2
    この場合、
  3. ファイルに可変長レコードが含まれている場合は、ファイル内の可変ページ数を計算し、その数を前の手順までの合計に加算します。そのために、以下の式を使用します。
    可変ページ数 =
       (AVL * #r) /
    (1 - (FST + (VPO / PS) ) )
    この場合、
  4. 前の手順までで求められた合計に対して、以下を加算します。
    使用するオルタネート コレーティング シーケンス ページごとに 1 ページ
    ファイルに RI の制約がある場合は参照整合性(RI)ページに 1 ページ
    この新しい合計は、ファイルに格納される論理ページの概算総数を表します。
  5. ページ アロケーション テーブル(PAT)ページ数を計算し、その数を前の手順で求めた概算論理ページ数に加算します(PAT ページの詳細については、ページ プリアロケーションを参照してください)。
    どのファイルにも 2 ページ以上の PAT ページがありますが、ファイル内の PAT ページ数を計算するには、以下の式のいずれかを使用します。
    8.x より前のファイル形式の場合:
    PAT ページ数 =
       ((手順 1~3 のページの合計) * 4)
       /
       ((ページ サイズ - オーバーヘッドの 8 バイト) * 2)
    8.x 以降のファイル形式の場合:
    PAT ページ数 =
       ((手順 1~3 のページの合計) * 6)
       /
       ((ページ サイズ - オーバーヘッドの 20 バイト) * 2)
  6. 前の手順までで求められた合計に対して、FCR ページの 2 ページを加算します。8.x 以降のファイル形式を使用している場合は、DIR(ディレクトリ)ページの 2 ページも加算します。
  7. 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 は「適用外」を意味します。

  8. 最後に、ファイル内の未使用ページのプールの予測サイズを加算します。トランザクショナル データベース エンジンは、シャドウ ページングにそのプールを使用します。プールのサイズを計算するには、以下の式を使用します。
    未使用ページのプールのサイズ = (キーの数 + 1)
    この式は、タスクがトランザクションの外部でのみ Insert、Update および Delete オペレーションを実行する場合に適用されます。タスクがトランザクション内でこれらのオペレーションを実行している場合は、トランザクションで予想される Insert、Update、および Delete オペレーションの平均数に、式で算定された非トランザクション数をかけます。同様に、タスクが同時並行トランザクションを実行している場合は、未使用ページのプールの予測サイズをさらに大きくする必要があります。
  9. ファイルに必要なページ数を計算した後、以下の式を使用して、ファイルを格納するために必要な最大バイト数を計算します。
    バイト単位のファイル サイズ = 総ファイル ページ数 * ページ サイズ

ページ サイズの選択 (トランザクショナル インターフェイス)

データベースの最適化 (トランザクショナル インターフェイス)