TEMPORARY
6. バッファープール
① ③ ②
エージェント
①小さなデータを読み込むときは、エージェントが直接読 み出しバッファープールに書き込む
②連続したデータを読み込むときは、DB2が判断してプ リフェッチャーは先読みを行う
③バッファープールから表スペースへデータを書き出す プロセスをページ・クリーナーが行う
バッファープールとは
データ・ページや索引ページを一時的に読み込んだり、変更したりするためのキャッシュ領域
LOB、ラージ・データは、バッファープールを使用しない
LOBをインライン格納した場合は、バッファープールを使用する
バッファープールは、各ページ・サイズ毎に少なくとも1つ作成する
データベース作成時に、デフォルトのバッファープール(IBMDEFAULTBP)が作成される
各表スペースは、それぞれ特定の 1つのバッファープールに関連付けられる
紐付ける表スペースとバッファープールは、同じページ・サイズである必要がある
複数の表スペースが同じバッファープールを使用することもできる
一時表スペース用のバッファープールとデータ用のバッファープールを分ける、データ用のバッファープール と索引用のバッファープールを分けることもできる
解説
バッファープールは、各ページ・サイズ毎に少なくとも1つ作成する必要があります。
データベースの表スペースのページ・サイズが1種類に統一されているケースで、バッファープールを割り当 てる場合、一つの大きなバッファープールを使用し、すべての表スペースは、同じバッファープールを共用す る設計が可能です。この場合、複数のバッファープールがないので、各バッファープールのヒット率をモニタ リングし、バッファープール間でサイズ調整を図る必要がないため、運用管理が容易な構成と言えます。
データベースの表スペースで、ページ・サイズが2種類あるケースで、バッファープールを割り当てる場合、
データ量やアクセス頻度に応じて、割り当てるメモリー・サイズを決定し、バッファープールを2つ以上用意す ることになります。
さらに、データやアプリケーションの性格が解っている場合、同じページ・サイズのバッファープールを分割し チューニングすることによって最適化を図ることもできます。一時表スペース用のバッファープールとデータ 用のバッファープールを分ける、データ用のバッファープールと索引用のバッファープールを分ける、アクセ ス頻度により、バッファープールのヒット率を上げたいマスター系の表のバッファープールを別にするなどが 考えられます。
©日本IBMシステムズ・エンジニアリング(株) データ・プラットフォーム部 147
参考: バッファープールのサイズ
経験則として、データの5%をバッファープールに割り当てると言われていた
サーバーに搭載されたメモリーのうち、OSや他のソフトウェアが使うメモリーを引いた残りのメモ リーをDBのメモリー領域としてアサインする
目安としては、物理メモリーの1/2~3/4程度
トランザクション系のシステムでは、物理メモリーの75%、分析系のシステムでは、物理メモリー の50%をバッファープールに割り当てるとのガイドがある
Buffer pools should make use of about 75% (OLTP) or 50% (OLAP) of available memory (Buffer Pools).
『Best practices for tuning DB2 UDB v8.1 and its databases』
– http://www-128.ibm.com/developerworks/db2/library/techarticle/dm-0404mcarthur/
実際には、バッファープールのヒット率を確認しながらサイズを調整するのが一般的
db2pd –bufferpoolsでモニタリング
データであれば、80-85%以上、索引であれば、90-95%以上のヒット率をめざす
頻繁にアクセスする表や索引をバッファープールにキャッシュさせるにはどのぐらいのサイズが 必要かを検討する
バッファープールのサイズは、オンラインで変更可能
バッファープールは、STMM(自己チューニング・メモリー)の対象にできるので、サイズ調整を
DB2に管理してもらう構成も可能
ブランク・ページです
©日本IBMシステムズ・エンジニアリング(株) データ・プラットフォーム部 149