Sun Java System Application Server Enterprise Edition 8.2 パフォーマンスチューニングガイド

ディスクの使用

ここでは、HADB データデバイスのサイズの計算方法と、複数のデータデバイスでの個別ディスクの使用について説明します。

HADB データデバイスのサイズの計算

HADB データベースを作成するときに、データデバイスの数と、各データデバイスのサイズを指定します。これらのデバイスは、すべてのユーザーデータを格納できる十分な容量にします。さらに、あとの節で説明されている、内部オーバーヘッドに対応するための追加スペースも確保します。

データベースがデバイス空間を使い果たすと、HADB から Application Server にエラーコード 4593 または 4592 が返されます。


注 –

これらのエラーメッセージの詳細については、『Sun Java System Application Server Enterprise Edition 8.2 Error Message Reference』を参照してください。


また、HADBによってこれらのメッセージは履歴ファイルにも書き込まれます。この場合、HADB では、データを挿入または更新するクライアント要求はすべてブロックされます。ただし、削除操作は受け付けられます。

HADB では、セッション状態がバイナリデータとして保存されます。セッション状態は直列化され、BLOB (バイナリラージオブジェクト) として保存されます。各 BLOB は、約 7K バイトのチャンクに分割され、各チャンクは、16K バイトのページにデータベース行 (コンテキスト行はタプルまたはレコードと同義) として保存されます。

各行で小さなメモリーオーバーヘッド (約 30 バイト) が生じます。もっともコンパクトな行割り当て (BLOB チャンク) では、1 ページに 2 行が保存されます。内部断片化により、各ページに1 行しか格納されないこともあります。平均では、各ページの 50% にユーザーデータが格納されます。

ノード障害が発生した場合でも利用できるように、HADB では常に、ユーザーデータがレプリケートされます。HADB ノードには、そのノード自体のデータと、ミラーノードからのコピーデータが保存されます。このように、すべてのデータは 2 回保存されます。平均ではノード容量の 50% がユーザーデータで、各ノードはミラーリングされるので、データデバイスの容量は、ユーザーデータの量の 4 倍以上にしてください。

データの再断片化については、HADB では、再断片化操作の実行中に古いバージョンのテーブルと新しいバージョンのテーブルの両方が保持されます。すべてのアプリケーション要求は古いテーブルで実行されますが、同時に新しいテーブルが作成されています。このため、データベースが主に、セッション状態の BLOB データを格納する 1 つの大きなテーブルとして使用される場合は、デバイス空間に必要な容量をさらに 2 倍にします。したがって、稼働中のデータベースにノードを追加し、すべてのノードを使用するためにデータを再断片化する場合は、利用可能なユーザーデータの量の 8 倍の容量が必要になります。

さらに、HADB の内部使用のために予約されているデバイス空間 (LogBufferSize の値の 4 倍) も考慮に入れます。HADB では、このディスク領域は高負荷時のログバッファーの一時的な記憶域として使用されます。

データデバイスのサイズの調整

HADB データデバイスのサイズを大きくするには、次のコマンドを使用します。

hadbm set TotalDatadeviceSizePerNode

このコマンドを実行すると、変更を適用するためにすべてのノードが 1 つずつ再起動されます。このコマンドの使用の詳細については、『Sun Java System Application Server Enterprise Edition 8.2 高可用性 (HA) 管理ガイド』「HADB の設定」を参照してください。


注 –

hadbm では、稼働中のデータベースインスタンスにデータデバイスは追加されません。


物理ディスクへの HADB ファイルの配置

パフォーマンスを最適にするには、各データデバイスを個別の物理ディスクに割り当てるべきです。これは、複数のデータデバイスを持つノードがある場合、または同じホストに複数のノードがある場合に当てはまります。

異なるノードに属するデバイスは、異なるデバイスに配置します。Red Hat AS 2.1 では、複数のノードに属するデバイスに同じディスクが使用されていると、非同期の入出力を待つために HADB ノードが常に監視されるので、特にこの措置が重要になります。

HADB ノードでは、出力デバイスで通常行われるように、非同期ではなく同期的に情報、警告、およびエラーが履歴ファイルに書き込まれます。そのため、HADB の動作やパフォーマンスが、履歴ファイルへの書き込み時にディスクの待ち時間による影響を受ける可能性があります。この状況が発生した場合は、履歴ファイル内で次のメッセージによって示されます。

BEWARE - last flush/fputs took too long

この問題を回避するには、HADB 実行可能ファイルと履歴ファイルを、データデバイスとは異なる物理ディスクに保存します。