HADB のデータは、ディスク上に割り当てられたデータデバイスに保存されます。データが処理されるには、そのデータが主メモリーにある必要があります。HADB ノードでは、この用途に共有メモリーの一部が割り当てられます。割り当てられたデータベースバッファーが、処理されるデータに比べて小さいと、多くの処理容量がディスク入出力によって浪費されます。書き込み集約型の操作を行う (たとえば、頻繁に更新されるセッション状態がある) システムでは、ディスク入出力に使用される処理容量が多すぎて要求処理が阻害されないように、データベースバッファーを十分な大きさにしてください。
データベースバッファーは、ファイルシステムのキャッシュに似ています。パフォーマンスを向上させるには、ディスク読み取り操作を待つ必要がないように、できるだけ容量の大きいキャッシュを使用します。データベース全体の内容がデータベースバッファーに収まるようにすれば、最高のパフォーマンスが得られます。しかし、ほとんどの場合、これは実現不可能です。クライアントアプリケーションの作業セットがバッファーに収まることを目標にします。
また、ディスク入出力も調べます。HADB で多数のディスク読み取り操作が実行される場合は、データベースのバッファー容量が不足していることになります。データベースバッファーは、ディスクで使用されるブロックサイズと同じ 16K バイトのブロックに分割されます。HADB では、1 回の入出力操作で読み取り用と書き込み用に複数のブロックがスケジュールされます。
ディスクの使用状況を調べるには、hadbm deviceinfo コマンドを使用します。たとえば、hadbm deviceinfo --details というコマンドを実行すると、次のような出力が表示されます。
NodeNo TotalSize FreeSize Usage 0 512 504 1% 1 512 504 1%
出力の各列の表記の意味は次のとおりです。
TotalSize: デバイスのサイズ (M バイト単位)。
FreeSize: 空きサイズ (M バイト単位)。
Usage: 使用率 (%)
リソースの使用率を調べるには、hadbm resourceinfo コマンドを使用します。たとえば、次のコマンドでは、データバッファープールの情報が表示されます。
%hadbm resourceinfo --databuf NodeNo Avail Free Access Misses Copy-on-write 0 32 0 205910260 8342738 400330 1 32 0 218908192 8642222 403466
出力の各列の表記の意味は次のとおりです。
Avail: バッファーのサイズ (M バイト単位)。
Free: 空きサイズ。この出力例は、データのボリュームがバッファーよりも大きいことを示しています。つまり、常にバッファー全体が使用されています。
Access: バッファー内でブロックがアクセスされた回数。
Misses: キャッシュに見つからなかった (ユーザーがディスク読み取りを待たされた) ブロック要求の数。
Copy-on-write: ディスクへの書き込み中にブロックが変更された回数。
システムを適切に調整するには、ミス回数 (それによる読み取り回数) が、書き込み回数に比べてごく少数になるようにします。この例では、ミスの割合が約 4% である (2 億回のアクセスに対して 800 万回のミスがあった) ことが示されています。これらの数値の許容範囲は、クライアントアプリケーションの要件によって異なります。
データベースバッファーのサイズを変更するには、次のコマンドを使用します。
hadbm set DataBufferPoolSize
このコマンドを実行すると、変更を有効にするためにすべてのノードが 1 つずつ再起動されます。このコマンドの使用の詳細については、『Sun Java System Application Server Enterprise Edition 8.2 高可用性 (HA) 管理ガイド』の「HADB の設定」を参照してください。