|
データ ファイル内のすべてのページは同じサイズです。したがって、ファイル内のページのサイズを決定するときは、以下の問題に答える必要があります。
以降では、これらの問題の答えを導き出す方法を説明します。得られた解答で、ファイルに最も合うページ サイズを選択できます。
ファイルの最適なページ サイズを決定する前に、まずファイルの物理レコード長を計算する必要があります。 物理レコード長は、論理レコード長とファイルのデータ ページ上にレコードを格納するのに必要なオーバーヘッドとの合計です(ページ サイズの一般的な情報については、ページ サイズを参照してください)。
トランザクショナル データベース エンジンは常に、すべてのレコードに最低 2 バイトのオーバーヘッド情報をそのレコードの使用量カウントとして格納しています。また、トランザクショナル データベース エンジンは、ファイル内でのレコードとキーの定義方法により、各レコード内に追加バイトを格納します。
次の表は、レコードの圧縮を使用しない場合、ファイルの特性によってレコード オーバーヘッドが何バイト必要になるかを示します。
次の表は、レコードの圧縮を使用する場合、ファイルの特性によってレコード オーバーヘッドが何バイト必要になるかを示します。
次の表は、ページのタイプによってページ オーバーヘッドが何バイト必要になるかを示します。
ページのタイプ
|
ファイル形式
|
||||
---|---|---|---|---|---|
6.x
|
7.x
|
8.x
|
9.0
|
9.5
|
|
データ
|
6
|
6
|
8
|
8
|
10
|
インデックス
|
12
|
12
|
14
|
14
|
16
|
変数
|
12
|
12
|
16
|
16
|
18
|
次の表は、ファイルのレコードおよびキーの定義方法に基づいて、物理レコード長を算出するため、論理レコード長に追加しなければならないオーバーヘッドのバイト数を示しています。レコードのオーバーヘッドの一覧は、表 17 および表 18 にもあります。
説明
|
例
|
|
---|---|---|
論理レコード長を算定します。手順については、論理レコード長の計算(トランザクショナル インターフェイス)を参照してください。
このワークシートのファイルの例では、72 バイトの論理レコードを使用します。可変長レコードを持つファイルの場合、論理レコード長はレコードの固定長部分のみを指します。
|
72
|
|
レコード使用カウントに 2 を加算します。
圧縮レコードのエントリでは、使用カウント、可変ポインター、レコード圧縮フラグを加算する必要があります。
6.x および 7.x: 7 バイト(2 + 4 + 1)
v8.x 以降: 9 バイト(2 +6 + 1) |
72 + 2 = 74
|
|
リンク重複キーごとに、8 を加算します。
重複キーのためのバイト数を算出する場合、トランザクショナル データベース エンジンは作成時に繰り返し重複として定義されているキーに対して重複ポインター スペースを割り当てません。デフォルトでは、ファイル作成時に作成された重複を許すキーがリンク重複キーです。圧縮レコードのエントリでは、重複キーのポインター用に 9 を加算します。
ファイル例には、1 つのリンク重複キーがあります。
|
74 + 8 = 82
|
|
予約重複ポインターごとに、8 を加算します。ファイル例には予約重複ポインターはありません。
|
82 + 0 = 82
|
|
ファイルが可変長レコードを許可している場合、8.x より前のファイルでは 4 を加算し、8.x 以降のファイルでは 6 を加算します。
ファイル例では可変長レコードを許可していません。
|
82 + 0 = 82
|
|
ファイルが VAT を使用している場合、4 を加算します。
ファイルの例では、VAT を使用していません。
|
82 + 0 = 82
|
|
ファイルがブランク トランケーションを使用する場合は、以下のいずれかを加算します。
ファイルの例では、VAT を使用していません。
|
82 + 0 = 82
|
|
ファイルでシステム キーの作成にシステム データを使用する場合は 8 を加算します。
ファイルの例では、System Data を使用していません。
|
82 + 0 = 82
|
|
|
物理レコード長
|
82
|
物理レコード長を使用して、データ ページに対するファイルの最適ページ サイズを決定できます。
トランザクショナル データベース エンジンはデータ レコードの固定長部分をデータ ページに格納しますが、固定長部分をページをまたいで分割することはしません。また、トランザクショナル データベース エンジンは各データ ページにオーバーヘッド情報を格納します(表 17 および18 を参照してください)。ページ サイズを決定するときは、この追加のオーバーヘッドを計算する必要があります。
選択したページ サイズからオーバーヘッド情報のバイト数を差し引いたものが物理レコード長の正確な倍数にならない場合、ファイルには未使用領域が含まれています。次の式を使用して、効率のよいページ サイズを見つけることができます。
ファイルによるディスク領域の使用量を最適化するには、未使用領域を最小にしてレコードをバッファーに格納できるページ サイズを選択します。サポートされるページ サイズはファイル形式により異なります。表 21 を参照してください。 内部レコード長(ユーザー データ + レコード オーバーヘッド)が小さく、ページ サイズが大きいと、無駄な領域がかなりの量になる可能性があります。
物理レコード長が 194 バイトの例を考えてみましょう。以下の表に、ページ サイズごとに、ページに格納できるレコード数とページに残る未使用領域のバイト数を示します。
表に示すように、ページ サイズ 512 を選択すると 1 ページに 2 つのレコードしか格納できず、ファイル形式によって各ページの 114 ~ 118 バイトが未使用になります。しかし、ページ サイズ 4,096 を選択すると、1 ページあたり 21 個のレコードを格納でき、各ページの 16 バイトだけが未使用になります。 同じ 21 レコードでも、ページ サイズ 512 では 2 KB 以上の無駄な領域ができてしまいます。
物理レコード長が非常に小さい場合は、ほとんどのページ サイズで無駄になる領域は非常にわずかです。ただし、v8.x より前のファイルではページごとに最大 256 レコードという制限があります。この場合、物理レコード長が小さいのに大きなページ サイズ(たとえば、4,096 バイト)を選択すると、無駄な領域が大きくなります。例として、表 22 に 8.x より前のファイル バージョンに対して 14 バイトのレコード長を設定した場合の動作を示します。
選択するページ サイズは、8 つのキー値にオーバーヘッドを加えた値を保持できるほどの大きさが必要です。ファイルに対して許容できる最小ページ サイズを見つけるには、表 23 で指定された値を追加します。
表では例として 9.5 ファイル形式を使用します。
説明
|
例
|
|
---|---|---|
バイト単位でファイル内の最大キーのサイズを決定します(社員ファイル例では、最大キーは 25 バイトです)。
一意のキーを定義していないファイルでは、システムで定義された、システム データとも呼ぶログ キーが最大キーである場合があります。そのサイズは 8 バイトです。
|
25
|
|
以下のうちの 1 つを追加します。
|
25 + 12 = 37
|
|
結果に 8 を掛けます(トランザクショナル データベース エンジンでは、1 ページに 8 個以上のキーのスペースが必要です)。
|
37 * 8 = 296
|
|
ファイル形式のインデックス ページ オーバーヘッドを追加します。
表 19 でインデックス ページの項目を参照してください。
|
296 + 16 = 312
|
|
最小ページ サイズ
|
312 バイト
|
計算結果以上の有効なページ サイズを選択します。ここで、選択するページ サイズがファイル作成後に作成されたキーのサイズを収容できるサイズでなければならないことに注意してください。キー セグメントの総数は、最小ページ サイズを指示する場合があります。たとえば、ページ サイズ 512 を使用するファイルには 8 個のキー セグメントしか定義できません。
|