本連載はDB2 UDB V8のシステム管理者、およびアプリケーション開発者のために、パフォーマンス・チューニングに必要な技法を紹介する。記事の原文はIBM developerWorksで2004年4月に公開された「Best practices for tuning DB2 UDB v8.1 and its databases」で、DB2の設計、配置、構成、SQL、運用管理、モニタリングといった内容を、実践的な操作を中心に解説している。想定する読者はDB2データベース管理の中級レベルのスキルを持っているユーザーである。スクリーン・ショットなど一部のコンテンツは、日本語版のものに差し替えている。(編集局)
DB2には、変更可能な構成パラメータがたくさんあります。それらの多くはDB2によって自動的に構成されますが、そうでないパラメータには、ほとんどの環境で適切に動作するデフォルト値が設定されています。ここでは、特に考慮が必要なパラメータについてのみ説明します。
データベース・マネージャ(すなわちインスタンス)の構成パラメータの中には、オンラインで変更できる(直ちに有効になる)ものと、インスタンスのリサイクル(DB2STOPの実行後にDB2STARTを実行する)が必要なものがあります。同じことが、データベースの構成パラメータにも当てはまります。いくつかのパラメータでは変更が直ちに有効になりますが、それ以外のパラメータでは、いったんデータベースを非活動化し、再活動化する必要があります。それぞれの構成パラメータに関するドキュメントには、オンラインで構成可能かどうかが記されています。
表1に示すのは、データベース・マネージャおよびデータベースの構成ファイルに関する基本的な管理コマンドです。
コマンド | 説明 |
---|---|
GET DBM CFG [SHOW DETAIL] | データベース・マネージャ構成ファイルの現在の値を表示する |
UPDATE DBM CFG USING config_param value | 指定されたデータベース・マネージャ構成パラメータ(config_param)を、指定された値(value)に設定する |
GET DB CFG FOR db_name [SHOW DETAIL] | 特定のデータベース(db_name)に関する構成ファイルの現在の値を表示する |
UPDATE DB CFG FOR db_name USING config_param value | 特定のデータベース(db_name)について、指定されたデータベース・マネージャ構成パラメータ(config_param)を、指定された値(value)に設定する |
表1 データベース・マネージャおよびデータベースの構成管理 |
次のDB2 CLPコマンドを使用すると、構成パラメータを変更した後で設定が直ちに(オンラインで)有効になったかどうかを確認できます。
|
例えばリスト1では、MAX_QUERYDEGREEとMAXTOTFILOPの値を、それぞれ「3」と「19000」に増やしました。オンラインで構成可能なパラメータの場合は、「Current Value」(現在の値)と「Delayed Value」(次回に有効になる値)が同じになります。そうでないパラメータの場合は、インスタンスの再始動またはデータベースの再活動化が必要です。
以下の構成パラメータのいくつかは共有メモリから割り振られるため、(前に説明した)OSの制限に注意する必要があります。メモリの割り振り量が必要以上に多すぎないことを確認してください。メモリを多く割り振ってしまうと、OSによるページングが発生し、パフォーマンスが低下します。
リスト2とリスト3は、データベース・マネージャおよびデータベースのスナップショットの例です。右側のカッコの中には、出力結果に基づいてチューニングが可能な構成パラメータを示してあります。
「grep」(UNIX)または「findstr」(Windows)を使用してスナップショット出力の「予備調査」を行い、問題を探すようにすると便利です。何か問題が見つかったら、スナップショットの出力結果を開いて、さらに詳しく調べることができます。
例えば、デッドロックが発生したかどうかを識別するには次のようにします。
UNIX: |
SHEAPTHRES(DBM)
このパラメータは、同時に実行される複数の専用ソートが、インスタンス内のすべてのデータベースに対して使用できるメモリの合計量を表します。追加のソートには、より少ない量のメモリが割り振られます。OLTPの場合は「20000」程度から始めるのが適切ですが、OLAPの場合は「40000」〜「60000」程度が適切です。
「Piped sorts accepted」(受け入れられたパイプ・ソート)の値が「Piped sorts requested」(要求されたパイプ・ソート)よりも小さい場合は、一般的にSHEAPTHRESのサイズを増やすとパフォーマンスが向上します。「Post threshold sorts」(SHEAPTHRESの上限に達した後でヒープを要求したソート)の値が大きい(2けた)場合は、SHEAPTHRESのサイズを増やしてください。「Total Private Sort heap allocated」(割り振られた専用ソート・ヒープの合計)の値は、SHEAPTHRESより小さくなければなりません。そうでない場合は、SHEAPTHRESを増やしてください。
MAXAGENTS(DBM)
これは、インスタンス内のすべてのデータベースに対するアプリケーション要求を受信できるデータベース・マネージャ・エージェントの最大数です。追加されるエージェントはそれぞれ追加メモリを必要とするため、このパラメータは、メモリが制限されている環境でデータベース・マネージャの合計メモリ使用量を制限するのに役立ちます。
メモリが制限されていないマシンでは、「Agents stolen from another application」(ほかのアプリケーションからスチールされたエージェント)の値が「0」になるまで、MAXAGENTSの値を増やしてください。「Local connections」(ローカル接続)と「Remote connections to db manager」(データベース・マネージャへのリモート接続)の値の合計は、インスタンスへの同時接続の数を表します。「High water mark for agents registered」は、これまでにデータベース・マネージャに同時に接続されたエージェントの最大数を表します。「Max agents overflow」は、MAXAGENTSの上限に達した後で、新しいエージェントの作成を求める要求が受信された回数を表します。「Agents Registered」は、モニタ中のデータベース・マネージャ・インスタンスに現在登録されているエージェントの数を表します。
NUMDB(DBM)
このパラメータは、同時に活動化できるローカル・データベースの数を定義します。実働システムでは、インスタンスごとに1つのデータベースが推奨されているため、このパラメータの値を「1」に設定します。それ以外のシステムでは、同時に活動化するデータベースの最大数に設定します。はっきりしない場合は、「Active local databases」の値を使用します。(次ページに続く)
Copyright © ITmedia, Inc. All Rights Reserved.