PSQL Programmer's Guide (v11)

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

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


メモ

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


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

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

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

式および派生手順

次の式は、ファイルの格納に必要な最大バイト数を算出するために使用します。 [手順 x を参照] は、この式の個々の要素を説明する手順への参照を示します。

ファイル サイズ(バイト単位) =

(ページ サイズ *
   (データ ページ数[手順 1 を参照]+
    インデックス ページ数[
手順 2 を参照]+
    可変ページ数[
手順 3 を参照]+
    その他のページ数[
手順 4 を参照]+
    シャドウ プール ページ数[手順 5 を参照]))

+ (特殊なページ サイズ [手順 6 を参照] *
  (PAT ページ数
[手順 7 を参照] +
   FCR ページ数 + 予約済みページ数
[手順 8 を参照] ))

ファイル サイズの算出には 2 種類のページ カテゴリを含めることが必要です。 標準ページ カテゴリには、データ ファイルが最初に作成されたときのページが含まれます(『Btrieve API Guide』の「Create(14)」 も参照してください)。 さらに、式には表 25 で示された特殊(非標準)ページも含める必要があります。 特殊ページはファイルのページ サイズの倍数になるとは限りません。

  1. 以下の式を使用して、データ ページの数を算出します。
    データ ページ数 =
       #r /
       ( (PS - DPO) / PRL )
    この場合、
  2. 以下の式のうちの 1 つを使用して、定義されたキーごとにインデックス ページ数を計算します。
    重複を許さないインデックス、または繰り返し重複キーを許すキーごとに、
    インデックス ページ数 =
       (#r /
       ( (PS - IPO) / (KL + 8) ) ) * 2
    この場合、
  3. ファイルに可変長レコードが含まれている場合は、以下の式を使用して、可変ページの数を算出します。
    可変ページ数 =
       (AVL * #r) / (1 - (FST + (VPO/PS))
    この場合、
  4. その他の標準ページ数を算出します。
  5. シャドウ ページ プールの概算ページ数を算出します。 データベース エンジンは、シャドウ ページングにプールを使用します。 以下の式を使用して、プール内のページ数を見積もります。
    シャドウ ページ プールのサイズ = (キー数 + 1) * (挿入、更新および削除の数の平均数) * (並行トランザクション数)
    この式は、タスクがトランザクションの外部で Insert、Update および Delete オペレーションを実行する場合に適用されます。 タスクがトランザクションでこれらのオペレーションを実行している場合は、トランザクション内で予想される Insert、Update、および Delete オペレーションの平均数に、式で算定されたトランザクション外部の値をかけます。 タスクが同時並行トランザクションを実行している場合は、未使用ページのプールの予測サイズをさらに大きくする必要があります。
  6. 25 でファイルのバージョンおよびデータ ページ サイズを参照し、特殊ページ サイズを調べます。 ファイル形式バージョンによって、FCR、予約済み、および PAT ページのページ サイズは、通常のデータ、インデックス、および可変ページ用のページ サイズとは異なっています。

    表 25 ファイル形式ごとの特殊ページのページ サイズ
    標準
    ページ サイズ
    ファイル形式
    v6.x および 7.x
    ファイル形式 8.x
    ファイル形式
    9.0 から 9.4
    ファイル形式 9.5
    特殊ページ サイズ
    PAT ページ エントリ
    特殊ページ サイズ
    PAT ページ エントリ
    特殊ページ サイズ
    PAT ページ エントリ
    特殊ページ サイズ
    PAT ページ エントリ
    512
    512
    N/A
    2,048
    320
    2,048
    320
    N/A
    N/A
    1,024
    1,024
    N/A
    2,048
    320
    2,048
    320
    4,096
    480
    1,536
    1,536
    N/A
    3,072
    480
    3,072
    480
    N/A
    N/A
    2,048
    2,048
    N/A
    4,096
    640
    4,096
    640
    4,096
    480
    2,560
    2,560
    N/A
    5,120
    800
    5,120
    800
    N/A
    N/A
    3,072
    3,072
    N/A
    6,144
    960
    6,144
    960
    N/A
    N/A
    3,584
    3,584
    N/A
    7,168
    1,120
    7,168
    1,120
    N/A
    N/A
    4,096
    4,096
    N/A
    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 は「適用外」を意味します。

  7. ページ アロケーション テーブル(PAT)ページ数を算出します(ページ プリアロケーションも参照)。
    各ファイルには少なくとも 2 ページの PAT ページがあります。 ファイル内の PAT ページ数を算出するには、以下の式のうちの 1 つを使用します。
    8.x より前のファイル形式の場合:
    PAT ページ数 =
       (((手順
    13 のページの合計) * 4) /
       (ページ サイズ - オーバーヘッドの 8 バイト)) * 2
    8.x 以降のファイル形式の場合:
    PAT ページ数 =
       2 * (手順 13 のページの合計 /
       PAT エントリ数)
    PAT エントリ数については、表 25 でファイル バージョンとデータ ページ サイズを見てください。
  8. ファイル コントロール レコード(FCR)ページ用に 2 ページを含めます(ファイル コントロール レコード (FCR) も参照)。 8.x 以降のファイル形式を使用している場合は、予約済みページ用の 2 ページも含めます。

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

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