|
トランザクショナル データベース エンジンには、必要なディスク使用量を最小限にするための以下の機能があります。
レコードを削除すると、そのレコードがこれまで占有したディスク領域が空きスペース リストに設定されます。新しいレコードを挿入すると、トランザクショナル インターフェイスは新しい可変ページを作成する前に空きスペース リスト上のページを使用します。空きスペース スレッショルドは、ページが空きスペース リストに表示されるには、可変ページにどれだけの空きスペースが残っている必要があるかをトランザクショナル インターフェイスに示します。
このような空き領域を再利用する方法では、ディスク領域を再利用するようにファイルを再編成する必要がありません。また、空きスペース リストを使用すると、数ページにまたがる可変長レコードの断片化を抑えることができます。空きスペース スレッショルドを高く設定すると断片化を減らすことができますが、ファイルのためのディスク領域がより多く必要になります。
インデックス ページがいっぱいになると、トランザクショナル データベース エンジンはデフォルトで新しいインデックス ページを自動的に作成し、いくつかの値をいっぱいになったインデックス ページから新しいインデックス ページへ移動します。[インデックス バランスの実行]オプションをオンにすると、既存のインデックス ページがいっぱいになるたびに新しいインデックス ページを作成しないようにすることができます。インデックス バランスを使用すると、トランザクショナル データベース エンジンはインデックス ページがいっぱいになるたびに、兄弟インデックス ページ内で利用可能な領域を探します。トランザクショナル データベース エンジンは次に、いっぱいになったインデックス ページから空き領域のあるインデックス ページへ値を振り分けます。
インデックス バランスは、インデックス ページの使用度を高めることにより、ページ数を減らし、同レベルのノード間でキーを均等に分配するため、読み取り操作でのパフォーマンスが向上します。しかし、この機能を使用すると、トランザクショナル データベース エンジンはより多くのインデックス ページを調べるために余分な時間が必要になったり、書き込み操作でより多くのディスク I/O が必要になったりする可能性もあります。インデックス バランスの正確な影響は状況によって異なりますが、インデックス バランスを使用した場合、書き込み操作のパフォーマンスは概して約 5 ~ 10% 低下します。
インデックス バランスは「定常状態」のファイルのパフォーマンスに影響を与えます。普通の変更操作は多少遅くなりますが、普通の取得操作は速くなります。 平均的なインデックス ページにより多くのキーを収容することによって、これを行います。通常のインデックス ページは 50 ~ 65% まで満たされ、この場合、インデックス バランスされたページは 65 ~ 75% まで満たされます。つまり、検索するインデックス ページが少なくなります。
Create Index(31)でインデックスを作成すると、インデックス ページは 100% フルに近くなるため、これらのファイルが書き込みでなく読み取りについて最適化されます。
メモ
ファイル内の File Flag フィールドに Index Balanced File ビットを設定する方法で、ファイル単位でインデックス バランスを指定することもできます。
[インデックス バランスの実行]オプションを有効にすると、アプリケーションが設定したバランス ファイル フラグの指定とは無関係に、トランザクショナル インターフェイスはすべてのファイルでインデックス バランスを行います。インデックス バランス設定オプションの指定方法については、『Pervasive PSQL User's Guide』を参照してください。
トランザクショナル インターフェイスはデータ圧縮を使用して、ファイルのレコードを挿入または更新する前にそれらのレコードを圧縮し、それらのレコードを取得するときにレコードを解凍します。圧縮されたレコードの最終の長さはそのレコードがファイルに書き込まれるまで決定できないので、トランザクショナル インターフェイスは常に圧縮されたファイルを可変長レコード ファイルとして指定します。ただし、固定長ファイルでデータ圧縮を使用すると、トランザクショナル インターフェイスは Insert オペレーションと Update オペレーションで、データ ファイルに指定された固定レコード長より長いレコードを生成しません。
トランザクショナル インターフェイスは圧縮されたレコードを可変長レコードとして記録するので、頻繁な挿入、更新および削除を行う場合は個々のレコードがいくつかのデータ ページにわたってフラグメント化される場合があります。トランザクショナル インターフェイスは 1 つのレコードを検索するために複数のファイル ページを読み取らなければならない場合があるので、この断片化によってアクセス時間が遅くなるおそれがあります。しかし、データ圧縮により、多数の繰り返し文字を含むレコードを格納する場合に必要となるディスク容量を、大幅に削減することもできます。トランザクショナル インターフェイスは、5 つ以上の同じ連続文字を 5 バイトに圧縮します。
この機能の詳細については、レコード圧縮を参照してください。
ブランク トランケーションはディスク容量を節約します。可変長のレコードを許し、かつデータ圧縮機能を使用しないファイルにのみ適用できます。この機能の詳細については、ブランク トランケーションを参照してください。
|