 |
PSQL Programmer's Guide (v11) |
 |
|
ページ (トランザクショナル インターフェイス)
ここでは、ページとトランザクショナル インターフェイスによるページの処理方法に関する以下の情報を示します。
ページ タイプ
ファイルは、一連のページから構成されています。ページとは、データベースがメモリとディスクの間で転送する記憶容量の単位です。ファイルは、以下のページ タイプから構成されています。
ファイル コントロール レコード(FCR)
|
ファイルのファイル サイズ、ページ サイズ、その他の特性などのファイルに関する情報が含まれています。6.0 以降のすべてのデータ ファイル内の最初の 2 つのページは FCR ページです。トランザクショナル データベース エンジンは常に、FCR ページのうちの 1 ページを現在のページと見なします。現在の FCR ページには、最新のファイル情報が含まれています。
|
ディレクトリ ページ(DIR)
|
8.x 以降のファイル形式のみで使用されます。どの PAT ページがビットマップを含んでいるかについての情報をフリー スロットの最大数とともに含んでいます。8.x 以降のファイルの 3 番目と 4 番目のページは DIR ページです。
|
ページ アロケーション テーブル(PAT)
|
ファイル内のページを追跡するために使用されるトランザクショナル データベース エンジンの内部的な実装の一部。
|
データ
|
レコードの固定長部分が含まれています。トランザクショナル データベース エンジンは、1 つの固定長レコードを 2 つのデータ ページにまたがって分割しません。ファイルが可変長レコードを許可していないか、データ圧縮を使用しない場合、ファイルにはデータ ページはありますが可変ページはありません。
|
可変
|
レコードの可変長部分が含まれています。レコードの可変長部分が可変ページの残りの領域より長い場合、トランザクショナル データベース エンジンは複数の可変ページにわたって可変長部分を分割します。ファイルが可変長レコードを許可しているか、データ圧縮を使用する場合、ファイルにはデータ ページと可変ページの両方があります。
|
インデックス
|
レコードの検索で使用されるキー値が含まれています。
|
オルタネート コレーティング シーケンス(ACS)
|
ファイル内のキーのオルタネート コレーティング シーケンスが含まれています。
|
6.0 以降のすべてのファイルには、FCR ページと PAT ページがあります。標準ファイルにはデータ ページとインデックス ページも含まれており、オプションとして可変ページと ACS ページが含まれています。また、8.0 以降のすべてのファイルには DIR ページも含まれています。データオンリー ファイルにはインデックス ページが含まれていません。キーオンリー ファイルにはデータ ページが含まれていません。
ページ サイズ
ファイルを作成するときに固定ページ サイズを指定します。指定できるページ サイズやファイル オーバー ヘッドなどは、ファイル形式をはじめさまざまな要因によって異なります。ページ サイズの説明については、第 5 章 データベースの設計を参照してください。以下のセクションでは概要について説明します。
ページ サイズの基準
指定するページ サイズは、以下の基準を満たす必要があります。
- ファイルのレコード長に相応なデータ ページを使用可能にする。
- 9.5 以降のファイル形式では、各データ ページに 12 バイト(8.0 から 9.4 までは 8 バイトで、それ以前は 6 バイト)のオーバーヘッド情報が含まれています。その後、トランザクショナル データベース エンジンは各データ ページにできるだけ多くのレコードを格納しますが、ページにまたがってレコードの固定長部分を分割することはありません。
- 最適なページ サイズでは、各データ ページの残余スペース量をできるだけ少なくしながら、最も多いレコードを収容できます。ページ サイズが大きいほど、通常はディスク領域の使用効率が高くなります。ただし、7.x のファイル形式では、データ ページには 256 レコードまでしか格納できません。内部レコード長(ユーザー データ + オーバーヘッド)が小さく、ページ サイズが大きいと、無駄な領域がかなりの量になる可能性があります。ページ サイズが 4,096 で内部レコード長が 6 の場合を考えると、最大 2554 バイトが無駄になります。
- ファイルのキー定義に適合するインデックス ページを許可する。
- 各インデックス ページには、12 バイトのオーバーヘッド情報が取り込まれます。その後、ファイルのインデックス ページは 8 個のキーと各キーのオーバーヘッド情報を収容できる大きさがなければなりません(設定ごとのオーバーヘッドのバイト数の説明については、表 17、18、19 および 20 を参照してください)。
- ファイルが必要とするキー セグメント数を許可する。
- セグメント化で説明したように、ファイルに対して定義するページ サイズはそのファイルに対して指定できるキー セグメント数を制限します。
- パフォーマンスを最適化する。
- パフォーマンスを最適化するには、ページ サイズを 2 のべき乗のサイズ、つまり、512 バイト、1,024 バイト、2,048 バイト、4,096 バイト、8,192 バイト、16,384 バイトに設定します。トランザクショナル データベース エンジンの内部キャッシュは一度に複数のサイズのページを格納できますが、2 のべき乗単位に分割されます。ページ サイズ 1,536、2,560、3,072 および 3,584 では、実際に、トランザクショナル データベース エンジン キャッシュ内のメモリが無駄になります。2 のべき乗のページ サイズを使用すると、キャッシュの使用効率が良くなります。
大きなページ サイズと小さなページ サイズ
現代のオペレーティング システムを最も効率よく使用するには、より大きなページ サイズを選択する必要があります。DOS が傑出したオペレーティング システムであった時代、つまり、セクターが 512 バイトで、すべての I/O が 512 の倍数で発生していたときは、小さなページ サイズが使用されていました。現在はそうではありません。32 ビットおよび 64 ビットのオペレーティング システムでは、いずれもデータを 4,096 バイトあるいはそれ以上のブロック単位でキャッシュに移動させます。CD ROM ドライブは、2,048 バイト単位で読み取られます。
トランザクショナル インターフェイスのインデックスは、4,096 バイトあるいはそれ以上のページ サイズを使用する場合に最も効率が良くなります。キーはノードごとにさらに多くの分岐を持つため、正しいレコード アドレスを検索するための読み取りは少なくて済みます。このことは、アプリケーションがキーでランダムな読み取りを行っている場合に重要です。アプリケーションがキーまたはレコードでファイルに順次アクセスする場合は重要ではありません。
ページを小さくするもっともな理由は、競合を避けるためです。各ページのレコード数が少ないほど、さまざまなエンジンまたはトランザクションが同時に同じページを要求する可能性は低くなります。ファイルのレコード数が比較的少なく、レコードが小さい場合は、小さなページ サイズを選択できます。ファイルが大きいほど、競合の発生する可能性が低くなるようです。
大きなページ サイズのもう 1 つの潜在的な問題は、バージョン 7.0 以降のファイルに特有なものです。同じデータ ページに収容できるレコードまたは可変長セクションの数は最大 256 個です。短いレコード、圧縮されたレコード、または短い可変長セクションがある場合は、すべてのページにまだ数百バイト残っていても、すぐに制限に達する可能性があります。その結果、必要とされるよりもはるかに大きなファイルになります。レコード サイズがわかれば、このことがどの程度大きな問題かを計算できます。
Pervasive PSQL データ ファイルのページ サイズを決定するには、次のようにします。
- キーはページ サイズが大きいほど効率よく働きます。B ツリーのノードごとにより多くの分岐ができるため、B ツリーのレベルが少なくなります。レベルが少ないとは、ディスクの読み込みや書き込みが少ないことです。ディスク読み込みが少ないと、パフォーマンスは向上します。
- 並行処理は、クライアント トランザクションが使用されている場合は特に、より小さなページの方が効率が良くなります。トランザクショナル データベース エンジンは、トランザクション中に変更されたページをロックするため、ほかのすべてのクライアントは、トランザクションが終了または中止するまで、ページのロックが解除されるのを待つ必要があります。たくさんのクライアントが並行して同一ページにアクセスを試みる場合、各ページで見つけられるデータが少ないほど効率が良くなります。
- ページへのランダム アクセスは、より小さなサイズのページの方が効率が良くなります。これは、実際に使用するデータがキャッシュにあることが多いためです。再度データにアクセスした場合、十中八九まだキャッシュ内にあるでしょう。
- 大量のレコードにシーケンシャル アクセスする場合は、大きなサイズのページの方が一度により多くのレコードを読み取れるため、効率が良くなります。ページを読み取るたびにほとんどすべてを使用するので、確実に読み取り回数が少なくなります。
データベース設計者はこれらの相反するニーズの中から選択しなければなりません。参照テーブルはめったに変更されませんが、ほとんど常に検索またはスキャンされるため、大きなページ サイズにする必要があります。トランザクション中に頻繁に追加および更新されるトランザクション ファイルは、小さいページ サイズにする必要があります。
メモ
これらの必要性のバランスをとる必要があります。
すべての要因を慎重に検討することによって、どのようなページ サイズにするのかに対する正しい答えを導くことができます。ページ サイズの選択の詳細については、ページ サイズの選択を参照してください。
 トランザクショナル インターフェイスの概要 |
 ファイル タイプ (トランザクショナル インターフェイス) |
|