DB2 には、データベース・パフォーマンスを最適化するために構成可能な、多数のパラメーターがあります。
DB2 のチューニングに関する完全な情報については、「DB2 UDB 管理ガイド: パフォーマンス」 文書を参照してください。
DB2 ロギング
- 説明: DB2 には、データベースごとに対応するログ・ファイルがあり、
これにより、データベース・アクセスや接続数の表示などの管理者へのサービスが提供されます。
複数のハード・ディスク・ドライブを持つシステムの場合、データベース・ファイルとは別のハード・ディスクに各データベースのログ・ファイルを置くことにより、パフォーマンスを大幅に向上できます。
- 表示または設定の方法: DB2 コマンド・プロンプトで次のコマンドを実行します。db2
update db cfg for [database_name] using newlogpath [fully_qualified_path].
- デフォルト値: データベースと同じディスク上に存在するログ
- 推奨値: 独立した高速ドライブ、可能な場合には Redundant Array of Independent Disk (RAID) 構成によってパフォーマンスを強化されたドライブを使用します。
DB2 で AIX を使用する場合の詳細については、
AIX システムの調整
を
参照してください。
DB2 構成アドバイザー
DB2 コントロール・センター内にあるこのアドバイザーは、DB2 のバッファー・プール・サイズ、
データベース、およびデータベース・マネージャーの構成パラメーターの推奨値を計算し、表示します。
また、これらの値を適用するオプションもあります。
このアドバイザーについての詳細は、コントロール・センター内のオンライン・ヘルプ機能を参照してください。
DB2 への接続数 - MaxAppls および MaxAgents
データベースのデータ・ソース設定値を構成するときには、必ず DB2 の
MaxAppls の設定値がそのデータ・ソースの最大接続数よりも大きくなるよう
にします。
クローンを設定しようと計画している場合は、MaxAppls の値を、最大接続数とクローン数とを掛け合わせたものに設定します。
同じ関係が、接続のセッション・マネージャー数にも適用されます。
MaxAppls の設定値は、接続数と同じか、それ以上にする必要があります。
セッションとデータ・ソースに同じデータベースを使用している場合は、MaxAppls の値を、
セッション・マネージャーとデータ・ソースに対する接続数の設定値の合計にしてください。
例えば、MaxAppls = (データ・ソースに対して設定されている接続数 + セッション・マネージャーの接続数) x クローン数。
WebSphere Application Server データベースと各アプリケーション・データベース用の MaxAppls の設定値を計算した後で、DB2 用 MaxAgents の設定値が、MaxAppls の値すべての合計と同じかそれ以上であることを確認してください。 例えば、MaxAgents = すべてのデータベースの MaxAppl の合計。
DB2 buffpage
バッファー・プールのヒット率は、データベース・マネージャーが、ページ要求に応じるためにディスクからページをロードする必要がなかった時間の割合を示します。つまり、ページはすでにバッファー・プール内にあるわけです。
バッファー・プールのヒット率が高いほど、ディスク入出力の頻度は下がります。
バッファー・プールのヒット率は次のようにして計算します。
- P = バッファー・プール・データ物理読み取り + バッファー・プール索引物理読み取り
- L = バッファー・プール・データ論理読み取り + バッファー・プール索引論理読み取り
- ヒット率 = (1-(P/L)) * 100%
DB2 reorgchk
- 説明: データと再バインドの現在の統計を取得します。多数の更新、削除、または挿入が行われた後では、
SQL ステートメントのパフォーマンスが低下することがあるため、このパラ
メーターを使用してください。
- 表示または設定の方法: DB2 の reorgchk update statistics on table all コマンドを使用して、現在接続しているデータベースのすべてのユーザーおよびシステム・テーブルで runstats を実行します。
bind コマンドを使用してパッケージを再バインドします。
統計が使用可能な場合は、DB2 CLP で、
db2 -v "select tbname, nleaf, nlevels, stats_time from sysibm.sysindexes" コマンドを実行します。
統計の更新が存在しない場合は、nleaf および nlevels は -1 であり、
stats_time は空のエントリー (例えば "-") を持ちます。 runstats コマンドが以前に実行された場合は、
runstats 操作完了時のリアルタイム・スタンプも stats_time の下に表示されます。
前の runstats 操作で表示された時刻が古すぎると考えられる場合は、もう一度 runstats コマンドを実行してください。
- デフォルト値: なし
- 推奨値: なし
DB2 locktimeout
- 説明: アプリケーションがロックを獲得するために待機する秒数を指定します。
このプロパティーの設定は、アプリケーションのグローバル・デッドロックを避けるのに役に立ちます。
- 表示または設定の方法: データベース xxxxxx のロック・タイムアウト・プロパティーの現行値を表示するには、DB2 のコマンド get db cfg for xxxxxx を発行して LOCKTIMEOUT の値を探します。 n の値に LOCKTIMEOUT を設定するには、LOCKTIMEOUT n を使用して DB2 update db cfg for xxxxxx コマンドを発行します。ここで、xxxxxx はアプリケーション・データベースの名前、また n は 0 から 30 000 まで (30 000 も含まれる) の値です。
- デフォルト値: -1。これは、ロック・タイムアウトの検出をオフにしていることを意味します。
この状態で、アプリケーションは、要求の時刻に 1 つのロックが使用可能でない場合は、以下のイベントのどちらかが発生するまで、ロックを待機します。
- 推奨値: ご使用のデータベース・アクセス・パターンが大多数の書き込みに向かう場合は、この値を、タイムアウトが発生したときに早めの警告を与えるように設定します。
これを行うには、30 秒に設定することが適しています。
ご使用のパターンが大多数の読み取りに向かう場合は、デフォルトのロック・タイムアウト値を受け入れるか、または 30 秒より大きな値にプロパティーを設定します。
DB2 maxlocks
- 説明: 行からテーブルへ、アプリケーションによって保留されているロックに対して、データベース・マネージャーがエスカレーションを実行するときに到達するロック・リストの比率を指定します。
エスカレーションのプロセスは多くの時間を費やさないにもかかわらず、テーブル全体を個々の行に対してロックするということは、並行性を減少させ、以降の影響を受けたテーブルへアクセスする試みに対するデータベース全体の性能を減少させる可能性があります。
- 表示または設定の方法: データベース xxxxxx の maxlocks プロパティーの現行値を表示するには、DB2 get db cfg for xxxxxx コマンドを発行し、MAXLOCKS の値を探します。
n の値に MAXLOCKS を設定するには、MAXLOCKS n を使用して DB2 update db cfg for xxxxxx コマンドを発行します。ここで、xxxxxx はアプリケーション・データベースの名前で n は 1 から 100 まで (100 も含まれる) の値です。
- デフォルト値: オペレーティング・システムごとのプロパティー・デフォルト値に対する現行のデータベース情報を参照します。
- 推奨値: ロック・エスカレーションがパフォーマンスに関する問題を引き起こしている場合、このパラメーターまたは locklist パラメーターの値を増加させる必要があります。これについては以下のパラグラフで説明します。
データベース・システム・モニターを使用して、ロック・エスカレーションが発生しているかどうかを判別することができます。
DB2 locklist
- 説明: ロック・リストに割り振られているストレージの量を指定します。
- 表示または設定の方法: データベース xxxxxx の locklist プロパティーの現行値を表示するには、DB2 get db cfg for xxxxxx コマンドを発行し、LOCKLIST の値を探します。
n の値に LOCKLIST を設定するには、LOCKLIST n を使用して DB2 update db cfg for xxxxxx コマンドを発行します。ここで、xxxxxx はアプリケーション・データベースの名前、また n は 4 から 60 000 まで (60 000 も含まれる) の値です。
- デフォルト値: オペレーティング・システムごとのプロパティー・デフォルト値に対する現行のデータベース情報を参照します。
- 推奨値: ロック・エスカレーションがパフォーマンスに関する問題を引き起こしている場合、このパラメーターまたは maxlocks パラメーターの値を増加させる必要があります。これについては前のパラグラフで説明されています。
データベース・システム・モニターを使用して、ロック・エスカレーションが発生しているかどうかを判別することができます。
詳しくは、『DB2 管理ガイド: パフォーマンス』 文書を参照してください。