DB2 バッファー・プール

DB2® バッファー・プールを使用して、エントリーとその属性をキャッシュに入れることができます。 これらの項目がキャッシュに入っている場合、キャッシュ・データの照会時に検索時間が短縮されます。

DB2 バッファー・プールのチューニングは、 DB2 パフォーマンス・チューニングの最も重要なタイプの 1 つです。 バッファー・プールは、表と索引の両方について、LDAP と物理 DB2 データベース・ファイルの間のデータ・キャッシュです。 エントリーとその属性がエントリー・キャッシュに見つからない場合、サーバーは DB2 バッファー・プールで値を検索します。 データベースが最初にロードされるとき、およびデータベースのサイズが大幅に変更されるときに、バッファー・プールのチューニングが必要です。 バッファー・プールを使用する場合は、ファイル・システム・キャッシュを使用不可にすることをお勧めします。 これにより、冗長なレベルのキャッシングが除去され、bulkload のようなユーティリティーのパフォーマンスが改善されます。

Directory Server では 2 つのバッファー・プールが使用されます。1 つは USERSPACE1 テーブル・スペース用であり、もう 1 つは LDAPSPACE テーブル・スペース用です。 USERSPACE1 のバッファー・プールの名前は IBMDEFAULTBP であり、LDAPSPACE テーブル・スペースのバッファー・プールの名前は LDAPBP です。 USERSPACE1 および LDAPSPACEについて詳しくは、 表スペースを参照してください。

DB2 バッファー・プールに関連して考慮しなければならない点がいくつかあります。 例:

  • バッファー・プールがない場合、すべてのデータベース・アクティビティーにより、ディスク・アクセスが行われます。
  • 各バッファー・プールのサイズが小さすぎる場合、LDAP は、 DB2 SQL 要求を満たすために DB2 ディスク・アクティビティーを待機する必要があります。
  • 1 つ以上のバッファー・プールが大きすぎる場合、LDAP サーバー上のメモリーが浪費される可能性があります。
  • LDAP キャッシュとバッファー・プールによって使用されるスペースが、サーバー上で使用可能なメモリーより大きい場合、オペレーティング・システムのページングが生じる可能性があります。 オペレーティング・システムのページングにより、ディスク・アクティビティーが増える場合があります。
  • サーバーに何千万ものユーザーが含まれている場合、バッファー・プールをチューニングしても、Directory Server のパフォーマンスが大幅に改善することはありません。 パフォーマンスを大幅に改善するのに十分な割合のデータベースをキャッシュに入れることは不可能であり、実用的ではありません。 数百万までのユーザーのディレクトリーであれば、パフォーマンスを改善するのに十分な割合のデータベースをキャッシュに入れることが可能です。
  • DB2 バッファー・プール・サイズは、オペレーティング・システムのページングを防止するのに十分な大きさでなければなりませんが、最大限の利点を得るには十分な大きさでなければなりません。
  • 最も重要なことは、現行バージョンの DB2 がバッファー・プールの自動チューニングをサポートしていることです。

idsperftune パフォーマンス・チューニング・ツールは、バッファー・プールが自動的に調整されるように、 DB2 構成オプションを設定します。

注: 仮想アプライアンスのコマンド・ライン・インターフェースから tools > db2cmd ユーティリティーを使用して、仮想アプライアンスですべての DB2 コマンドを実行してください。
sdsva.example.com> tools db2cmd
DB2 コマンド・ライン・プロセッサーが開きます。
db2 =>

現在の DB2 バッファー・プール・サイズを取得するには、 DB2 コマンド・プロンプトで以下のコマンドを実行します。

!db2 connect to sdsinst1
!db2 select varchar(bpname,20) as bpname,npages,pagesize fromsyscat.bufferpools

次の出力例はデフォルト設定を示しています。

BPNAME	                NPAGES	        PAGESIZE
------------------ 		-----------		 -----------
IBMDEFAULTBP            29500	          4096
LDAPBP                   1230		       32768

2 record(s) selected.

テーブル・スペースごとに現行のファイル・システム・キャッシュ・オプションを判別するには、次のコマンドを実行します。

!db2 get snapshot for tablespaces on sdsinst1 | egrep ’tablespace name|File system caching’

ファイル・システム・キャッシングをサポートするオペレーティング・システムおよびファイル・システム環境で、 DB2バージョン 10.5.0.3 を使用してファイル・システム・キャッシングをオフにするには、次のコマンドを実行します。

!db2 connect to sdsinst1
!db2 altertablespace USERSPACE1no file systemcaching 
!db2 altertablespace LDAPSPACEno file systemcaching 
!db2 terminate
!db2stop 
!db2start

バッファー・プール・サイズを設定するには、次のコマンドを使用します。

!db2 alter bufferpool ibmdefaultbp size new size in 4096 byte pages
!db2 alterbufferpool ldapbpsize new size in 32768 byte pages
!db2 terminate 
!db2stop 
!db2start

Directory Server が稼働中にこれらのコマンドが実行される場合、db2stop コマンドは失敗します。 データベースに接続されているアプリケーションがあることを知らせるエラー・メッセージが生成されます。 エラーが生成される場合は、Directory Server を停止してから次のコマンドを実行します。

!db2stop 
!db2start

DB2 バッファー・プールに最適なメモリー・サイズを割り当てるには、値を決定する必要があります。 詳しくは、 DB2 バッファー・プール・パフォーマンスの分析を参照してください。

いずれかのバッファー・プール・サイズの設定が高すぎると、メモリー不足のために DB2 が始動できません。 DB2 が失敗すると、 DB2 はコア・ダンプ・ファイルを生成する可能性があります。通常、エラー・メッセージはありません。

バッファー・プール・サイズが大きいために DB2 が始動できない場合は、バッファー・プール・サイズをより小さい値に設定して、 DB2を再始動してください。 大きいバッファー・プール・サイズでソース・システムからターゲット・システムにデータベースを復元する場合、復元操作が失敗する可能性があります。

安定性とパフォーマンス向上のために、 DB2 を最新のフィックスパック・レベルにアップグレードすることも検討する必要があります。

DB2バージョン 10.5.0.3 では、単一パーティション・データベースを作成すると、 self_tuning_mem データベース構成パラメーターが自動的に ON に設定されます。 このパラメーターの値は AUTOMATIC に設定されます。 値を AUTOMATIC に設定する場合、次のメモリー・コンシューマーを自動的にチューニングすることが可能です。

  • バッファー・プール (ALTER BUFFERPOOL ステートメントと CREATE BUFFERPOOL ステートメントによって制御されます)
  • パッケージ・キャッシュ (pckcachesz 構成パラメーターによって制御されます)
  • メモリーのロック (locklist 構成パラメーターと maxlocks 構成パラメーターによって制御されます)
  • メモリーのソート (sheapthres_shr 構成パラメーターと sortheap 構成パラメーターによって制御されます)
  • データベース共有メモリー (database_memory 構成パラメーターによって制御されます)

Self Tuning Memory Manager (STMM) が設定される場合、データベース・メモリーの使用が最適であることを確実にする必要があります。 DATABASE_MEMORY パラメーターの最適な値を確認する必要があります。 詳しくは、 DATABASE_MEMORY パラメーター値の判別を参照してください。

DB2 バッファー・プールがすべての使用可能メモリーを使用しないように制限することができます。 メモリーの使用を制限するために、STMM を使用可能にする前に次の設定値を検討してください。

  • デフォルトの Automatic 値を使用するには、データベース共有メモリー・サイズ構成パラメーター DATABASE_MEMORY を次のように設定します。
    !db2 ALTER BUFFERPOOL LDAPBP SIZE AUTOMATIC
    !db2 ALTER BUFFERPOOL IBMDEFAULTBP SIZE AUTOMATIC
  • 通常の負荷がかかった状態でインスタンスを実行し、DATABASE_MEMORY の値をモニターして、この設定の最適なサイズを確認します。
  • DATABASE_MEMORY を、Automatic ではなく、判別されたサイズに設定します。
    !db2 ALTER BUFFERPOOL LDAPBP SIZE Determined_Value
    !db2 ALTER BUFFERPOOL IBMDEFAULTBP SIZE Determined_Value
    Determined_Value 値により、データベースのパフォーマンスが最適化されます。