パフォーマンス・システム運用に関する設定

BIND設定

DB2製品には、CLP、CLI/ODBC、Import/Exportなどのユーティリティが付属するが、これらはパッケージをデータベースにバインドしなければ使用できない。

バインドすべきパッケージは、DB2 ConnectかCAEをインストールした場所のSQLLIB\BNDに存在している。また、パッケージは、スキーマNULLIDの中に作成される(AS/400にはデフォルトでこのスキーマが存在しないため、事前に作成しておく必要がある)。それ以外のプラットフォーム別の項目は以下の通り:

DRDAプラットフォームバインドリストファイル必要な権限
MVS or OS/390ddcsmvs.lstSYSADM / SYSCTRL / CREATE IN COLLECTION NULLID と BINDADDの組み合わせ、これら3つのうちいずれか。
AS/400ddcsas.lstCHANGE NULLID権限、またはそれを含む上位の権限
VMddcsvm.lstDBA権限。BIND文にGRANTオプションをつけるのなら、NULLIDユーザにいくつかのシステムテーブルのアクセス権限をGRANT OPTION付きで付加。
VSEddcsvse.lst

BIND文は、以下のような構文で実行される(BINDが終了されるまではCLPは使用できないため、DB2コマンドの引数として実行されることに注意):

db2 BIND file-path@file-name
    SQLERROR CONTINUE BLOCKING (NO|ALL|UNAMBIG)
    MESSAGE message-file GRANT (user-id|group-id|PUBLIC)
file-path,file-name
バインドリストファイル名のパス名とファイル名
SQLERROR CONTINUE
バインドファイルリストには、特定のプラットフォームでエラーを起こすようなSQL文も含まれている。SQLERROR CONTINUEオプションを指定しないと、バインド作業が途中で停止してしまう。
BLOCKING (NO|ALL|UNAMBIG)
SQL文の結果をブロックとして受け取るかどうかのオプション。NOはブロック化しない。ALLはリードオンリーの結果セットはブロック化する。UNAMBIGはリードオンリーで静的SQLの結果セットはブロック化することを意味する。
GRANT (user-id|group-id|PUBLIC)
バインドした文章をどのユーザに実行許可するかを指定する。

接続数の制限

DRDAでの接続数は、いくつかの要素によって制限される。

DB2 UDBでのSNA設定

DB2 UDBのSNA側の設定には、以下のようなものがある:

Dependent LU か Independent LU か
Dependent LU であれば(NAU Addressが0以外であれば)、LUごとに一つの接続しか行えない
Mode Session Limit
各モード(IBMRDBなど)には、サポートする最大SESSION数が、PLU_MODE_SESSION_LIMITという変数で定義されている。
Max Number of Link Stations
各DLCには、サポートする最大LINK数が定義されている。

OS/400 VTAM側での設定

OS/400 VTAM側の設定には、以下のようなものがある:

DSESSLIM
APPL定義の中で、サポートする最大SESSION数が、このパラメータに定義されている。
Modeent definition
IBMRDB定義のPSERVCパラメータの下バイト目が'F'であれば、Independent LU の複数接続をサポートするが、'C'であれば、Dependent LUを接続する代わりに複数接続をサポートしない。
LU definition
LU定義でLOCADDRが000でなければ、そのLUはDependent LUとなり、複数接続をサポートしない。

DB2 for OS/390側での設定

DB2 for OS/390側側の設定には、以下のようなものがある:

MAXDBAT
DSNZPARMモジュール中のMAXDBATパラメータは、プロトコルを問わないすべての接続の合計数上限を定義する。
CONVLIMIT
SYSIBM.LUMODESテーブル中のCONVLIMITフィールドは、その定義を用いた接続数について、DSESSLIMパラメータを上書きする。

ネットワーク機器の設定

ネットワーク機器の設定には、以下のようなものがある:

NCP boxのNUMILU
接続がNCP box(37XX)を経由して行われている場合、そのNUMILUパラメータが、接続数上限を定義することになる。

パフォーマンスにかかわる設定

ここでは、一般論ではなく、具体的な設定のみを挙げていく。

回線の選択

高速な回線を選択すると、全般的なパフォーマンスが向上する。3172や2216を使用すると、3174や3745よりパフォーマンスが向上する。

Network Control Processの設定

Network Control Processの設定のうち、DB2 UDBのパフォーマンスに関連するものは、以下のようなものである:

Coattailing Values (DELAY)
DELAY値は、3270端末エミュレータを使用する場合にCPUへの付加を下げる目的で設定されるものだが、DRDA接続を行う場合にはパフォーマンスを極端に落としてしまう。ゼロを指定しなければならない。PCCUマクロの中で指定されているのは送信であり、LNCTLSで指定されているのは送信である。
MAXTSL
送信されるデータサイズの最大値。不要なデータ分割を避けるため、RECVBUFより大きくなければならない。
PACING
同期を取るためのウェイト
MAXDATA
PIUの最大サイズ。RUSIZEより29バイト以上大きくなければならない
MAXBFRU
VTAM側でのバッファの大きさ。RUSIZEより大きくなければならない

ICPでの考慮事項

3172を用いての接続ではICPプログラムが使用される。このプログラムの考慮事項は以下のようなものである。

VTAMでの考慮事項

VTAMでの考慮事項は以下のようなものである。

IOBUF
VTAMのIOバッファサイズであり、やり取りするデータが大きいものであればこの値を増やすことでパフォーマンスが向上する。
RUSIZES (VTAM Pacing and RU size)
VTAM PacingとRUSIZEの積はDRDAブロックの大きさ以下である必要がある。RUSIZEはxyXYというフォーマットで表される。前半が受信・後半が送信で、ブロックの大きさは x*2^yになる。
Pacing values
APPNであれば自動的に最適な値が設定される。そうでなければ適切な値をセットする必要がある。

DB2 Connectでの考慮事項

DB2 Connectでの考慮事項は以下のようなものである。

RQRIOBLK
データのブロックサイズである。ネットワークがサポートする最大のサイズにすべきである。デフォルトは32KB。
BLOCKING
データの受信をブロック化する。ブロック化するとネットワークの利用効率が上がる。

CLI/ODBCでの考慮事項

CLI/ODBCでの考慮事項は以下のようなものである。

DEFFEREDPREPARE=1
受け取ったSQLをいくつかまとめて処理する
AUTOCOMMIT=0
明示的なDTLを受け取るまでROLLBACK/COMMITを行わない
OPTIMIZEFORNROWS=n
最初のn行を高速に受け取れるようにアクセスプランを最適化する。