![[z/OS]](../images/ngzos.gif)
z/OS 用 DB2 チューニングのヒント
DB2® のパフォーマンス・チューニングは通常、WebSphere® Application Server アプリケーションのパフォーマンス全体にとって重要な機能です。DB2 は、Enterprise JavaBeans (EJB) の推奨データ・ストアとして頻繁に使用されます。 本書では、DB2 チューニングの一部の基本ガイドラインと、WebSphere Application Server 用の DB2 チューニングの一部のガイドラインをリストします。DB2 チューニングについて詳しくは、「DB2 Universal Database™ (OS/390® および z/OS® 版) 管理ガイド V7」(SC88-8761-01) を参照してください。インターネット・サイト http://www.ibm.com/servers/eserver/zseries/zos/で DB2 資料にアクセスできます。
SQLJ (Structured Query Language in Java™) の利点
DB2 Universal JDBC Driver プロバイダーを使用している場合は、BMP Bean と CMP Bean の両方の照会言語として SQLJ を実装できます。 SQLJ では、JDBC トランザクションのデフォルトの照会言語である動的 SQL よりも、トランザクションのオーバーヘッドの発生が少なくなります。 SQLJ は静的で、事前に準備した計画を使用します。 このため、SQLJ では一般的にアプリケーションのパフォーマンスが向上します。 DB2 for z/OS データベース管理者にとっては、セキュリティー・モデルおよびステートメントの再現性フィーチャーが静的 SQL と類似しているため、多くの場合、SQLJ の採用は容易です。SQLJ を使用する場合は、WebSphere Studio Application Developer および Rational® Application Developer の新規バージョンのフィーチャーである追加ステップを実行する必要があります。
詳しくは、トピック『データ・アクセス・アプリケーションの開発』を参照してください。
一般的な DB2 チューニングのヒント
以下の説明は、DB2 for z/OS レガシー JDBC ドライバーと呼ばれる DB2 for z/OS JDBC ドライバーにのみ関連する内容です。
- まず、ご使用の DB2 ログの容量が十分大きく、最も高速なボリュームに割り振られていることを確認し、 必ずログが最適な CI サイズとなるようにしてください。
- 次に、最も頻繁に読み取られるデータができるだけ多くメモリー内にあるように、 バッファー・プールが調整されているようにしてください。 ESTOR およびハイパープールを使用してください。
- 未フォーマットのテーブルを頻繁に使用するということもご検討ください。 これにより、ランタイム時のフォーマット設定を回避することができます。
WebSphere 用 DB2 チューニングのヒント
- 「DB2 Tracing
Under the DB2 for z/OS Universal
Driver」が確実にオフになるようにしてください。
- db2.jcc.propertiesFile jvm プロパティーに、DB2 jcc
プロパティー・ファイルを WebSphere Application Server for z/OS に指定するように定義されている場合は、以下のトレース・ステートメントが指定されていれば必ずコメント化してください。
# jcc.override.traceFile=<file name> # jcc.override.traceFile=<file name>
- アプリケーションが使用している DB2 Universal JDBC Driver データ・ソースのうち、traceLevel カスタム・プロパティーにゼロ以外が定義されているものがある場合は、WebSphere Application Server for z/OS 管理コンソールを使用して traceLevel をゼロに設定します。
- db2.jcc.propertiesFile jvm プロパティーに、DB2 jcc
プロパティー・ファイルを WebSphere Application Server for z/OS に指定するように定義されている場合は、以下のトレース・ステートメントが指定されていれば必ずコメント化してください。
- 必ず、すべてのオブジェクト 1 次キーに対して索引を定義してください。索引を定義しない場合、テーブル・スペースのスキャンに時間がかかります。
- テーブルにデータを十分取り込んだら、必ず再編成をしてテーブルを圧縮してください。 RUNSTATS を実行すると、テーブル、列サイズおよびアクセスに関する DB2 カタログ統計が最新のものになります。 これによって、最適化プログラムが最適なアクセス・パターンを選択できるようになります。
- スレッドと呼ばれる接続を DB2 でさらに定義する必要があります。WebSphere Application Server は、数多くのスレッドを使用します。サーバーはスレッドが使用可能になるまで作成スレッドで待機するため、 スレッドの多使用がスループット・ボトルネックの原因となる場合があります。
- JDBC の保守レベルが最新であることを確認してください。多くのパフォーマンスの改善が
、JDBC に実施されました。JDBC 保守レベルを判別するには、シェルから以下を入力してください。
java com.ibm.db2.jcc.DB2Jcc -version
このコマンドが「クラスが見つからない」という応答を返す場合、 ドライバーのレベルが古く、このコマンドをサポートしていないか、コマンドを正確に発行されていません。 ベスト・プラクティス: DB2 の動的ステートメント・キャッシングを使用可能にします。 これを行うには、ZPARMS を CACHEDYN(YES) MAXKEEPD(16K) に変更してください。アプリケーションによっては、これにより DB2 のパフォーマンスが著しく改善される場合があります。 特に、JDBC および LDAP 照会のパフォーマンスを向上させることができます。bprac
- DB2 のチェックポイント間隔の設定値を増やします。これを行うには 、CHKFREQ=xxxxx を含むように ZPARMS を変更します。ここで xxxxx は、ベンチマークを指定する際に 高い値で設定されます。 ただし、実動システムでは、チェックポイント度数を低くしておくための妥当な理由が他にもあります。
//DB2INSTE JOB MSGCLASS=H,CLASS=A,NOTIFY=IBMUSER /*JOBPARM SYSAFF=* //****************************************************************** //* JOB NAME = DSNTIJUZ //* //* DESCRIPTIVE NAME = INSTALLATION JOB STREAM //* //* LICENSED MATERIALS - PROPERTY OF IBM //* 5675-DB2 //* (C) COPYRIGHT 1982, 2000 IBM CORP. ALL RIGHTS RESERVED. //* //* STATUS = VERSION 7 //* //* FUNCTION = DSNZPARM AND DSNHDECP UPDATES //* //* PSEUDOCODE = //* DSNTIZA STEP ASSEMBLE DSN6.... MACROS, CREATE DSNZPARM //* DSNTIZL STEP LINK EDIT DSNZPARM //* DSNTLOG STEP UPDATE PASSWORDS //* DSNTIZP STEP ASSEMBLE DSNHDECP DATA-ONLY LOAD MODULE //* DSNTIZQ STEP LINK EDIT DSNHDECP LOAD MODULE //* DSNTIMQ STEP SMP/E PROCESSING FOR DSNHDECP //* //* NOTES = STEP DSNTIMQ MUST BE CUSTOMIZED FOR SMP. SEE THE NOTES //* NOTES PRECEDING STEP DSNTIMQ BEFORE RUNNING THIS JOB. //* //* LOGLOAD=16000000, //*********************************************************************/ //* //DSNTIZA EXEC PGM=ASMA90,PARM='OBJECT,NODECK' //STEPLIB DD DSN=ASM.SASMMOD1,DISP=SHR //SYSLIB DD DISP=SHR, // DSN=DB2710.SDSNMACS // DD DISP=SHR, // DSN=SYS1.MACLIB //SYSLIN DD DSN=&LOADSET(DSNTILMP),DISP=(NEW,PASS), // UNIT=SYSALLDA, // SPACE=(800,(50,50,2)),DCB=(BLKSIZE=800) //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSUT1 DD UNIT=SYSALLDA,SPACE=(800,(50,50),,,ROUND) //SYSUT2 DD UNIT=SYSALLDA,SPACE=(800,(50,50),,,ROUND) //SYSUT3 DD UNIT=SYSALLDA,SPACE=(800,(50,50),,,ROUND) //SYSIN DD * DSN6ENV MVS=XA DSN6SPRM RESTART, X . . . AUTH=YES, X AUTHCACH=1024, X BINDNV=BINDADD, X BMPTOUT=4, X CACHEDYN=YES, X . . . MAXKEEPD=16000, X . . . DSN6ARVP ALCUNIT=CYL, X . . . DSN6LOGP DEALLCT=(0), X . . . DSN6SYSP AUDITST=NO, X BACKODUR=5, X CHKFREQ=16000000, X CONDBAT=400, X CTHREAD=1200, X DBPROTCL=PRIVATE, X DLDFREQ=5, X DSSTIME=5, X EXTRAREQ=100, X EXTRASRV=100, X EXTSEC=NO, X IDBACK=1800, X . . . //*