目次


ボリュームは 11 に設定 - DB2構成パラメーターのチューニング

Comments

はじめに

インスタンス構成パラメーター、データベース構成パラーメーター、レジストリー変数も入れると、DB2 ® ではデータベース制御のために 300 以上のグローバル設定があります。これは、パラメーター数の多さで混乱させることが目的ではなく、必要なときに、データベースのパフォーマンスとオペレーティング・システム・リソースの消費量をユーザーが細かく制御できるようにするためです。

風刺曲を得意とする「スパイナル・タップ (脊椎穿刺)」という架空のロック・バンドがあるとします。このバンドはメンバーの IQ の高さよりも、ロックンロールの音量の大きさで売っていて、アンプの音量を 11 に設定すると、10 に設定したときよりも 10% 音が大きくなると信じています。DB2 の場合は、すべてのパラメーターを 11 にまでチューニングしなくても、パフォーマンスを上げることができるのです。この記事の目的は、『DB2 管理の手引き』とともに使用して、これを達成する方法を示すことです。

基本的な概念

まず、300 という数のパラメーターに驚いてパニックしてはいけません。その多くはインスタンスやデータベースの作成時に解決されます (データベース・テリトリー、コード・ページ、コード、および国コードなど)。DIAGLEVEL や DIAGPATH などのパラメーターは、トラブルシューティングの必要がない限り、デフォルトのまま残しておけます。さらに、パフォーマンス関連の構成パラメーターの大部分は、コントロール・センターからパフォーマンス・ウィザードを実行すれば、DB2 が推奨値を指示してくれます。

図 1: パフォーマンス・ウィザードを使用したデータベースの構成

データベース構成パラメーターはデータベースに対して適用されます (ここでは、かの有名な SAMPLE データベースを例に説明します)。データベース・マネージャー構成パラメーターは、そのインスタンスの下で作成されるすべてのデータベースに適用されます。db2ilist コマンドを実行すると、マシン上にインスタンスが表示されます。

C:\dbm>db2ilist
DB2CTLSV 
DB2

レジストリー変数は、一般に、マシン上で実行されているすべての DB2 インスタンスに適用されます。レジストリー変数は『管理の手引き』の付録に説明されています。これらは db2set を実行して設定します。たとえば、次の db2set コマンドを実行すると、全 DB2 インスタンスに対してハッシュ結合が使用可能になります。

db2set db2_hash_join=yes

コマンド db2set -lr は、使用可能なすべてのレジストリー変数をリストします。引数を指定しないで db2set を実行すると、値の設定が表示されます。たとえば、次のコマンドにより、Windows 上のデフォルトの DB2 インスタンスの名前が表示されます。

C:\dbm>db2set db2instdef
DB2

データベース・マネージャーのパラメーターの設定は、次のコマンドで表示します。

DB2 GET DATABASE MANAGER CONFIGURATION

このコマンドの短縮形は、次のとおりです。

DB2 GET DBM CFG

データベース構成パラメーターの設定を表示するには、次のコマンドを使用します。

DB2 GET DATABASE CONFIGURATION FOR <>

このコマンドの短縮形は、次のとおりです。

DB2 GET DB CFG FOR SAMPLE

動的および静的構成パラメーター

DB2 バージョン 7 では、データベース・マネージャーの構成パラメーターのほとんどは静的です。パラメーターの変更はデータベース管理者が実施する必要があり、変更した後で有効にするには DB2 を再起動する必要があります。データベース構成パラメーターのほとんどは、すべてのアプリケーションをデータベースから切断して再接続しないと有効になりません。IBM ではこの不便さを認識し、将来のリリースでほとんどの DB2 構成パラメーターを動的にし、変更結果が即座にわかるようにする予定です。バージョン 7 では、動的構成パラメーターの例としては、次のようなものがあります。

  • インスタンス・レベル:デフォルトのデータベース・システム・モニターのスイッチ (dft_monswitches)
  • データベース・レベル:グループへのコミット回数 (mincommit)

構成パラメーターの変更の追跡

システム管理に規範をもってハードウェアおよびソフトウェアを稼動させる場合、変更を加えるのは変更の効果を監視できる場合で、変更の結果としてシステムが好ましくない状態になった場合には元に戻す方法がわかっている場合のみです。一度に複数の変更を加えると、望ましい動作へのリストアが複雑になることがあるため、システム管理規範によっては、変更は一度に 1つだけを勧めているものがあります。

DB2 の稼動状態に満足していて、そんなときに説明できない問題が検出された場合は IBM に連絡しますが、その際に「最後に変更したものは何ですか?」と聞かれることがあります。ここで DB2 が役に立ちます。たとえば、DB2DIAG.LOG は関心のある DB2 イベントの記録です。DB2 では、トレース、ログ、イベント・モニター、およびバックアップとリストアのための履歴ファイルも提供しています。

データベース・マネージャーおよびデータベース構成で変更されたものを追跡するために、それぞれの履歴上の値を保管する表を作成できます。次の例では ID 列も追加し、ID 列をどのように使用できるかを示します。

CREATE TABLE DBMCFG 
       (CFGPARM VARCHAR(254) NOT NULL,
        VALUE VARCHAR(254),
        CAPTURE_TSTMP TIMESTAMP NOT NULL WITH DEFAULT,
        ITERATION INT GENERATED ALWAYS AS IDENTITY)

CREATE TABLE DBCFG 
      (CFGPARM VARCHAR(254) NOT NULL,
       VALUE VARCHAR(254),
       CAPTURE_TSTMP TIMESTAMP NOT NULL WITH DEFAULT, 
       ITERATION INT GENERATED ALWAYS AS IDENTITY)

この 2 つの表を使用すると、構成パラメーターの値を特定の時点で記録できます。DB2 を常時稼動状態している場合は、データベース・マネージャー・パラメーターが静的であるため、そのほとんどが (最初以外は) あてはまらないことがあります。同様に、DB2 を停止したことがなく、1つ以上のアプリケーションが常時接続されている場合、データベース構成パラメーターに変更を加えても有効にはなりません。その時点のパラメーター値がわかると、「水曜日にはパフォーマンスが良好であったが、木曜日にはシステム上のユーザー数が少なかったにもかかわらず、パフォーマンスが低下した」というような問題のデバッグに役立つ可能性があります。

構成パラメーターの変更のたびに、この 2 つの表に値をすべてキャプチャーしておくことを忘れなければ、DB2 およびアプリケーション動作の変更が構成パラメーター設定に関係するものかどうかを見極められます。2 つの IMPORT コマンドを使用した値のキャプチャー方法を、次に示します。これらを DB2 起動スクリプトに含めておくと、このレコードの保守が自動化されます。各 IMPORT コマンドの前に、構成のファイルへの書き込みが発生しています (このすべては、『管理 API 解説書』に記載されている DB2 インターフェイスを使用して C プログラムで作成できます。)

  1. 構成をファイルに書き込む方法は、次のとおりです。

    DB2 GET DBM CFG>DBMCFG.OUT
    DB2 GET DB CFG FOR SAMPLE>DBCFG.OUT
  2. 値を表にキャプチャーする方法は、次のとおりです。IMPORT コマンドは *.OUT ファイルの内容を読み取り、前述の表に ASCII 行を行として挿入します。

    DB2 IMPORT FROM DBMCFG.OUT OF ASC METHOD L ( 2 81,60 314 ) INSERT INTO DBMCFG
    DB2 IMPORT FROM DBCFG.OUT OF ASC METHOD L ( 2 81,60 314 ) INSERT INTO DBCFG

構成の値は CFGPARM 列と VALUE 列の両方に保管されます。構成値は単独で VALUE 列に保管されるため、これを計算に使用できます。ログの場所などのパラメーターは絶対パスを使用できるのできわめて長くなる可能性があるため、VALUE 列は大きく取ってあります。これらの表が巨大になる場合は、CFGPARM および ITERATION の組み合わせにユニーク索引を付けることを考慮します。

CREATE UNIQUE INDEX CFGPARM_ITERATION ON DBCFG 
(CFGPARM,ITERATION)

これで、簡単な照会を実行するだけで、変更されたものをすべてリストできます。この照会は、データベース・パラメーターが 76個あることを理解しているかどうかに依存しますが、これは、使用している DB2 製品およびリリースによりさまざまです。同様に、データベース・マネージャーの構成が小さくなると、パラメーター数が減ります (約 112 個のパラメーター)。TIME および DATE 関数を使用して、タイムスタンプを読みやすくし、これらの列を順番に並べます。

SELECT CFGPARM, VALUE, TIME(CAPTURE_TSTMP), DATE(CAPTURE_TSTMP)     
FROM DBCFG
      WHERE ITERATION>76 AND 
      CFGPARM NOT IN 
             (SELECT CFGPARM FROM DBCFG WHERE ITERATION<77)
      ORDER BY 4,3

NOT INは、最新の値と元の値を比較するために使用しています。どのサンプル・コードでも同じことですが、コードの作成者よりもやる気があれば、そのコードから貴重な何かを考案できるものです。たとえば、『管理の手引き』では、消費するメモリー・タイプによって、パラメーターを分類してあります。

  • データベース共有メモリー
  • アプリケーション共有メモリー
  • エージェント専用メモリー
  • エージェント/アプリケーション通信メモリー
  • データベース・マネージャー・インスタンス・メモリー

前述の *.OUT ファイルで特殊文字を削除すると、メモリー構成値の数値を数値フィールドに保管し、前述の 5 種類のメモリー量の計算に使用できます。DB2 の使用方法に関する興味深い多くの課題と同じように、これもユーザー各自が試してみてください。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Information Management
ArticleID=326721
ArticleTitle=ボリュームは 11 に設定 - DB2構成パラメーターのチューニング
publish-date=042002