パフォーマンス・システム運用に関する設定
BIND設定
DB2製品には、CLP、CLI/ODBC、Import/Exportなどのユーティリティが付属するが、これらはパッケージをデータベースにバインドしなければ使用できない。
バインドすべきパッケージは、DB2 ConnectかCAEをインストールした場所のSQLLIB\BNDに存在している。また、パッケージは、スキーマNULLIDの中に作成される(AS/400にはデフォルトでこのスキーマが存在しないため、事前に作成しておく必要がある)。それ以外のプラットフォーム別の項目は以下の通り:
DRDAプラットフォーム | バインドリストファイル | 必要な権限 |
MVS or OS/390 | ddcsmvs.lst | SYSADM / SYSCTRL / CREATE IN COLLECTION NULLID と BINDADDの組み合わせ、これら3つのうちいずれか。 |
AS/400 | ddcsas.lst | CHANGE NULLID権限、またはそれを含む上位の権限 |
VM | ddcsvm.lst | DBA権限。BIND文にGRANTオプションをつけるのなら、NULLIDユーザにいくつかのシステムテーブルのアクセス権限をGRANT OPTION付きで付加。 |
VSE | ddcsvse.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プログラムが使用される。このプログラムの考慮事項は以下のようなものである。
- Block Delay Time
- Maximum response length
- Maximum inbound/outbound record length
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行を高速に受け取れるようにアクセスプランを最適化する。