![[z/OS]](../images/ngzos.gif)
z/OS용 DB2 튜닝 팁
DB2®에 대한 성능 조정은 일반적으로 WebSphere® Application Server 애플리케이션의 전체 성능에 있어 매우 중요합니다. DB2는 EJB(Enterprise JavaBeans)에 선호되는 데이터 저장소입니다. 아래 목록에는 DB2 조정을 위한 기본 가이드라인과 WebSphere Application Server용 DB2 조정을 위한 일부 가이드라인이 있습니다. DB2 조정에 대한 자세한 정보는 DB2 Universal Database™ for OS/390® 및 z/OS® 관리 안내서(문서 번호: SC26-9931-03)를 참조하십시오. DB2 서적은 다음 인터넷 위치에서 액세스할 수 있습니다. http://www.ibm.com/servers/eserver/zseries/zos/.
SQLJ(Structured Query Language in Java™)의 이점
DB2 Universal JDBC 드라이버 제공자를 사용할 경우, BMP 및 CMP Bean의 조회 언어로서 SQLJ를 구현할 수 있습니다. SQLJ에서는 동적 SQL인 JDBC 트랜잭션의 기본 조회 언어에 비해 트랜잭션 오버헤드가 덜 발생합니다. SQLJ는 정적이며 사전 준비된 계획을 사용합니다. 따라서 SQLJ는 일반적으로 애플리케이션 성능을 향상시킵니다. DB2 for z/OS 데이터베이스 관리자의 경우 보안 모델 및 명령문 반복성 기능이 정적 SQL의 해당 기능과 유사하기 때문에 대부분 SQLJ를 채택하기 쉽습니다. SQLJ에는 최신 WebSphere Studio Application Developer 및 Rational® Application Developer의 기능인 추가 단계가 필요합니다.
자세한 정보는 데이터 액세스 애플리케이션 개발 주제를 참조하십시오.
일반 DB2 조정 팁은 다음과 같습니다.
이 설명은 DB2 for z/OS JDBC Driver(DB2 for z/OS Legacy JDBC Driver라고도 함)에만 적용됩니다.
- 먼저, DB2 로그 용량이 충분하고 가장 빠른 볼륨에 할당되며 크기가 최적 크기인지 확인하십시오.
- 다음으로, 가장 자주 읽는 데이터가 가능한 메모리에 많이 있도록 버퍼 풀을 조정했는지 확인하십시오. ESTOR 및 하이퍼풀을 사용하십시오.
- 자주 사용하는 테이블은 미리 형식화함으로써 런타임 시 형식화를 수행하지 않게 됩니다.
DB2 for WebSphere 조정 팁은 다음과 같습니다.
- DB2 for z/OS Universal
Driver에서 DB2 추적이 꺼져 있는지 확인하십시오.
- db2.jcc.propertiesFile jvm 특성이 DB2 jcc
특성 파일을 WebSphere Application
Server for z/OS로 지정하도록 정의된 경우,
파일의 다음 추적 명령문에서 주석이 제거되는지 확인하십시오(지정된 경우).
# jcc.override.traceFile=<file name> # jcc.override.traceFile=<file name>
- 0이 아닌 traceLevel 사용자 정의 특성을 사용하여 애플리케이션이 사용하는 DB2 Universal JDBC Driver 데이터 소스가 정의되는 경우, WebSphere Application Server for z/OS 관리 콘솔을 사용하여 traceLevel을 0으로 설정하십시오.
- db2.jcc.propertiesFile jvm 특성이 DB2 jcc
특성 파일을 WebSphere Application
Server for z/OS로 지정하도록 정의된 경우,
파일의 다음 추적 명령문에서 주석이 제거되는지 확인하십시오(지정된 경우).
- 사용자의 모든 오브젝트 기본 키에 대해 인덱스를 정의헀는지 확인하십시오. 확인하지 않는 경우 별도 테이블 공간 스캔 작업을 수행해야 합니다.
- 테이블에 필요한 모두 데이터가 있는 경우 테이블을 재구성하여 크기를 줄입니다. 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 체크포인트 간격 설정을 큰 값으로 늘리십시오. 이렇게 하려면 벤치마크를 수행할 때 xxxxx가 높은 값으로 설정되는 CHKFREQ=xxxxx가 포함되도록 ZPARMS를 수정하십시오. 그러나 프로덕션 시스템의 경우, 체크포인트 빈도 값을 작게 유지해야 하는 다른 합당한 이유가 있습니다.
//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 . . . //*