複数のデータベース・バッファー・プールの管理

各データベースは最低 1 つのバッファー・プールを必要としますが、 複数のページ・サイズの表スペースを持つ 1 つのデータベースに対して、 サイズやページ・サイズの異なる複数のバッファー・プールを作成することもできます。

ALTER BUFFERPOOL ステートメントを使ってバッファー・プールのサイズを変更できます。

新規データベースは、IBMDEFAULTBP というデフォルト・バッファー・プールを持っています。 そのデフォルト・ページ・サイズは、データベースの作成時に指定されたページ・サイズに基づいています。 デフォルトのページ・サイズは、pagesize という情報データベース構成パラメーターに保管されています。 デフォルトのページ・サイズで表スペースを作成したときにそれを特定のバッファー・プールに割り当てていない場合、表スペースはデフォルトのバッファー・プールに割り当てられます。 デフォルトのバッファー・プールのサイズ変更と、その属性の変更は可能ですが、 それをドロップすることはできません。

バッファー・プールのページ・サイズ

データベースを作成またはアップグレードした後で、追加のバッファー・プールを作成できます。 デフォルトとして 8 KB ページ・サイズのデータベースを作成した場合、デフォルト・バッファー・プールがデフォルト・ページ・サイズ (この場合、8 KB) で作成されます。 別の方法として、バッファー・プールを 8 KB のページ・サイズで作成し、同時に同じページ・サイズの 1 つ以上の表スペースを作成することもできます。 この方法では、データベースの作成時に 4 KB のデフォルト・ページ・サイズを変更する必要はありません。 異なるページ・サイズを使用するバッファー・プールに表スペースを割り当てることはできません。

注: ページ・サイズが 4 KB より大きい表スペース (8 KB、16 KB、32 KB など) を作成する場合は、それを同じページ・サイズを使用するバッファー・プールに割り当てる必要があります。 このバッファー・プールが現在アクティブでない場合、 Db2® は、同じページ・サイズを使用する別のアクティブなバッファー・プール (存在する場合)、または最初のクライアントがデータベースに接続するときに Db2 が作成するデフォルトのシステム・バッファー・プールの 1 つに、表スペースを一時的に割り当てようとします。 データベースが再度アクティブにされ、 最初に指定されたバッファー・プールがアクティブである場合、 Db2 は表スペースをそのバッファー・プールに割り当てます。

CREATE BUFFERPOOL ステートメントでバッファー・プールを作成するときにサイズを指定しない場合は、バッファー・プール・サイズは AUTOMATIC に設定され、Db2 によって管理されます。 後でバッファー・プール・サイズを変更するには、ALTER BUFFERPOOL ステートメントを使用します。

パーティション・データベース環境の場合には、1 つのデータベース用の各バッファー・プールのデフォルト定義は、全データベース・パーティションに対して同一になっています。 ただし、それ以外の定義が CREATE BUFFERPOOL ステートメントで指定された場合、または特定のデータベース・パーティションのバッファー・プールのサイズが ALTER BUFFERPOOL ステートメントによって変更された場合は除きます。

大容量バッファー・プールの利点

大容量バッファー・プールには次の利点があります。
  • 頻繁に要求されるデータ・ページをバッファー・プール内に保持しておけるので、 迅速にアクセスができるようになります。 入出力操作を減らすと入出力の競合も減るので、 結果として、応答時間が短縮したり、 入出力操作に必要なプロセッサー・リソースを減らすことになります。
  • 同じ応答時間で、より高いトランザクション率を達成する可能性があります。
  • 頻繁に使用するディスク・ストレージ・デバイス (カタログ表や頻繁に参照するユーザー表および索引を格納するストレージ・デバイスなど) において、入出力の競合を回避できます。 また、TEMPORARY 表スペースを格納するディスク・ストレージ・デバイス上の入出力の競合が減少すると、 照会で必要になるソートの速度も速くなります。

バッファー・プールが多数ある場合の利点

使用しているシステムに以下の条件のいずれかが当てはまる場合には、バッファー・プールを 1 つだけ使用してください。
  • 合計バッファー・プール・スペースが 10 000 ページ (4 KB 単位) より少ない
  • アプリケーションの知識があって目的に合ったチューニングができる担当者がいない
  • テスト・システム上で作業中である
それ以外のすべての状況では、以下の理由により、複数のバッファー・プールの使用を検討してください。
  • TEMPORARY 表スペースを別のバッファー・プールに割り当てることができるので、一時記憶を必要とする照会 (特にソートが多い照会など) のパフォーマンスを向上させることができます。
  • たくさんの小さな更新トランザクション・アプリケーションから繰り返し迅速にアクセスする必要があるデータの場合には、 そのデータを含む表スペースを別のバッファー・プールに割り当てることを検討してください。 このバッファー・プールのサイズが適切ならば、ページが見つかる可能性が高くなるので、 応答時間を短縮したりトランザクション・コストを下げるのに役立ちます。
  • データを別のバッファー・プールに分離し、特定のアプリケーション、 データ、索引を特別扱いにすることができます。 例えば、頻繁に更新される表や索引を入れるバッファー・プールを、 頻繁に照会されるけれども更新は多くない表や索引のバッファー・プールとは別々にするという場合などに役立ちます。
  • めったに使用されないアプリケーションによってアクセスされるデータに対しては、 小さなバッファー・プールを使用することができます。 特に、非常に大きな表に対して非常にランダムなアクセスを要求するアプリケーションの場合は有効です。 このような場合には、1 回の照会分より長い時間、 バッファー・プール内にデータを保持しておく必要はありません。 この種のデータには小さなバッファー・プールを用意して、余ったメモリーを他のバッファー・プールのために空けておく方が効果的です。
データを別々のバッファー・プールに分けて入れると、パフォーマンスが向上してコストが比較的少ないという診断データが、統計および会計トレースから生成される場合があります。

バッファー・プールが複数あるシステムの調整においては、セルフチューニング・メモリー・マネージャー (STMM) を使用すると理想的です。

開始時のバッファー・プール・メモリーの割り振り

バッファー・プールを作成するか、バッファー・プールを変更する場合は、データベースの開始時にすべてのバッファー・プールの割り振りができるように、すべてのバッファー・プールで必要なメモリーの合計量がデータベース・マネージャーで使用できなければなりません。 データベース・マネージャーがオンラインになっている間にバッファー・プールを作成または変更する場合、 データベース・グローバル・メモリーの追加メモリーが使用できるようになっている必要があります。 新規バッファー・プールを作成する際や既存のバッファー・プールのサイズを増やす際に DEFERRED キーワードを指定し、その際必要とするメモリーが使用できない場合、 データベース・マネージャーは、次にデータベースが活動化される際に変更を加えます。

このメモリーがデータベースの開始時に使用できなかった場合には、データベース・マネージャーは最小サイズの 16 ページのシステム・バッファー・プール (各ページ・サイズに 1 つ) だけを使用し、警告が返されます。 データベースは、その構成が変更されてデータベースが完全に再始動可能になるまでは、この状態が継続します。 パフォーマンスは最高になっていない可能性がありますが、データベースへの接続、バッファー・プール・サイズの再構成、またはその他の重要なタスクの実行が可能です。 これらのタスクが完了したら、データベースを再始動します。 長時間この状態でデータベースの操作を行うことは避けてください。

システム・バッファー・プールだけでデータベースを開始しないようにする場合は、DB2_OVERRIDE_BPF レジストリー変数を使用して、使用可能なメモリーの使用を最適化してください。