PSQL Programmer's Guide (v11)

レコード長 (トランザクショナル インターフェイス)

すべてのレコードには、レコード長、あるレコードのキーを含むすべてのデータを取り込めるだけの十分な大きさが必要な固定長部分、および、データ ページにレコードを格納するのに必要なオーバーヘッドが含まれています。

物理レコード長を算出するために論理レコード長に追加しなければならないオーバーヘッドのバイト数については、レコードの圧縮を使用しない場合のレコード オーバーヘッドのバイト数およびレコードの圧縮を使用した場合のレコード オーバーヘッドのバイト数を参照してください。

次の表は、固定長レコードの最大レコード サイズの一覧です。

表 12 固定長レコードの最大レコード サイズ(バイト単位)
ファイル バージョン
システムデータ不使用1
システムデータ使用2
7.x
4,088 (4096 - 8)
4,080 (4088 - 8)
8.x
4,086 (4096 - 10)
4,078 (4086 - 8)
9.0 ~ 9.4
8,182 (8192 - 10)
8,174 (8182 - 8)
9.5 以上
16,372 (16384 - 12)
16,364 (16372 - 8)
1 ページ オーバーヘッドおよびレコード オーバーヘッドは、最大ページ サイズから減算して最大レコード サイズを決定します。レコード オーバーヘッドは、各ファイル形式で 2 バイトです。
2 システム データは 8 バイトの追加オーバーヘッドが必要です。

ファイルがシステム データを使用し、レコード長が上記の表に示した制限を超える場合、データベース エンジンではそのファイルに対し、データ圧縮を行うことに注意してください。

オプションとして、ファイル内のレコードには可変長部分を含めることができます。可変長レコードには、すべてのレコード内で同じサイズである固定長部分と、各レコードでサイズの異なる可変長部分があります。可変長レコードを使用するファイルを作成する場合、固定長の長さは各レコードの最大長です。最大レコード長は定義しません。

理論的には、可変長レコードの最大長はトランザクショナル インターフェイスのファイル サイズの限界にのみ制限されます。Pervasive PSQLバージョン 9.5 の場合は 256 GB です(9.x から 9.5 までのバージョンでは 128 GB、それ以前のバージョンでは 64 GB)。実際に、最大長は選択したオペレーティング システムやレコード アクセス方法のような要因により制限されます。レコード全体を検索、更新または挿入すると、データ バッファー長パラメーターは 16 ビット符号なし整数であるため、レコード長を 65,535 までに制限します。

実行するオペレーションによって異なりますが、データ バッファーは各種情報の転送に使用するトランザクショナル インターフェイス関数パラメーターです。データ バッファーには、レコード全体、レコードの一部、ファイル仕様などが含まれます。データ バッファーの詳細については、第 5データベースの設計の表 15 を参照してください。


メモ

データと内部ヘッダー情報の合計バイトは、64 KB(0x10000)バイトを超えることはできません。トランザクショナル インターフェイスは、内部の目的で 1,024(0x400)バイトを予約します。つまり、64,512(0xFC00)バイトのデータを持つことができます。


ファイルが非常に大きいレコードを使用する場合は、ファイル内の可変長部割り当てテーブル(VAT)を考慮してください。リンク済みリストとして実装されている VAT は、レコードの可変長部分へのポインターの配列です。VAT は、非常に大きいレコードの各部分へのランダム アクセスを加速します。非常に大きいレコードの例として、バイナリ ラージ オブジェクト(BLOB)やグラフィックスがあります。

非常に大きい可変長レコードを含むファイルについて、トランザクショナル インターフェイスは多数の可変ページにまたがってレコードを分割し、可変長部と呼ぶリンク済みリストでこれらのページを接続します。アプリケーションがチャンク オペレーションを使用してレコードの一部にアクセスし、レコードの一部がレコード自体の先頭を越えたオフセットから始まる場合、トランザクショナル インターフェイスはそのオフセットをシークするための可変長部リンク済みリストの読み取りにかなりの時間を費やすことがあります。そのようなシーク時間を制限するために、ファイルが VAT を使用するように指定できます。トランザクショナル インターフェイスは可変ページに VAT を格納します。VAT を含むファイルでは、可変長部分を持つ各レコードにそれ自体の VAT があります。

トランザクショナル インターフェイスが VAT を使用するのは、ランダム アクセスを加速するためだけでなく、データ圧縮時に使用される圧縮バッファーのサイズを制限するためでもあります。ファイルでデータ圧縮を使用する場合、そのファイルで VAT を使用する必要があります。


ダブルバイト文字のサポート (トランザクショナル インターフェイス)

データの整合性 (トランザクショナル インターフェイス)