![[z/OS]](../images/ngzos.gif)
Dicas de Ajuste do DB2 para z/OS
O ajuste de desempenho do DB2 é, geralmente, crítico para o desempenho geral de um aplicativo do WebSphere Application Server. Muitas vezes, o DB2 é o armazém de dados preferido para os EJBs (Enterprise JavaBeans). A seguir estão listadas algumas diretrizes básicas para ajuste do DB2, assim como algumas diretrizes para ajuste do DB2 para o WebSphere Application Server. Para obter informações mais completas sobre ajuste do DB2, consulte o DB2 Universal Database para OS/390 e z/OS Administration Guide, Número do Documento SC26-9931-03. Os manuais do DB2 podem ser acessados no seguinte local da Internet:http://www.ibm.com/servers/eserver/zseries/zos/.
Benefícios da Linguagem de Consulta Estruturada em Java™ (SQLJ)
Se você utilizar o provedor do DB2 Universal JDBC Driver, poderá implementar a SQLJ como a linguagem de consulta para os beans BMP e CMP. A SQLJ incorre em menos código extra de transação do que o idioma de consulta padrão para as transações JDBC, que é uma SQL dinâmica. A SQLJ é estática e utiliza planos pré-preparados. Assim, normalmente, a SQLJ melhora o desempenho do aplicativo. Para administradores de bancos de dados DB2 para z/OS, a SQLJ é, muitas vezes, de fácil adoção porque o modelo de segurança e os recursos de possibilidade de repetição de instrução são semelhantes àqueles da SQL estática. A SQLJ requer etapas extras que são recursos de versões mais recentes do WebSphere Studio Application Developer e do Rational Application Developer.
Consulte o tópico "Implementando Aplicativos de Acesso a Dados" para obter mais informações.
Dicas gerais de ajuste do DB2:
Esta discussão relaciona-se apenas ao Driver JDBC do DB2 para z/OS, referido como Driver JDBC Legado do DB2 para z/OS.
- Primeiramente, assegure-se de que os logs do DB2 sejam grandes o suficiente, estejam alocados nos volumes mais rápidos que você tiver e de que seus tamanhos de CI sejam ideais.
- Em seguida, certifique-se de ter ajustado os conjuntos de buffers para que os dados lidos com mais frequência estejam na memória o máximo possível. Utilize ESTOR e hyperpools.
- Você poderá considerar a pré-formatação de tabelas que serão muito utilizadas. Isso evita a formatação no tempo de execução.
Dicas de ajuste do DB2 para WebSphere:
- Assegurando-se de que o Rastreio do DB2
no DB2 para z/OS Universal
Driver Está Desativado.
- Se a propriedade db2.jcc.propertiesFile jvm tiver sido definida para especificar
um arquivo de propriedades DB2 jcc
para o WebSphere Application Server para z/OS, assegure-se de que
as seguintes instruções de rastreio no arquivo sejam colocadas como comentário no caso de
serem especificadas:
# jcc.override.traceFile=<nome do arquivo> # jcc.override.traceFile=<nome do arquivo>
- Se alguma das origens de dados do DB2 Universal JDBC Driver que estão sendo utilizadas por seus aplicativos estiverem definidas com uma propriedade customizada traceLevel diferente de zero, utilize o WebSphere Application Server para z/OS Administrative Console para configurar o traceLevel como zero.
- Se a propriedade db2.jcc.propertiesFile jvm tiver sido definida para especificar
um arquivo de propriedades DB2 jcc
para o WebSphere Application Server para z/OS, assegure-se de que
as seguintes instruções de rastreio no arquivo sejam colocadas como comentário no caso de
serem especificadas:
- Certifique-se de definir índices em todas as suas chaves primárias do objeto. Se não fizer isso, ocorrerão varreduras de alto custo da área de tabela.
- Certifique-se de que, depois das tabelas serem suficientemente preenchidas, você fará uma reorganização para compactá-las. A execução de RUNSTATS assegurará que as estatísticas de catálogo do DB2 sobre tabela, tamanhos de coluna e acessos sejam os mais atuais para que os melhores padrões de acesso sejam escolhidos pelo otimizador.
- Você precisará definir mais conexões chamadas encadeamentos no DB2. O WebSphere Application Server utiliza muitos encadeamentos. Às vezes, ele é a origem de gargalos de rendimento, pois o servidor aguardará no encadeamento de criação até que um esteja disponível.
- Certifique-se de que esteja atualizado com a manutenção do JDBC. Muitos aprimoramentos de desempenho
foram feitos no JDBC. Para determinar o nível de manutenção do JDBC, insira o seguinte a partir do shell:
java com.ibm.db2.jcc.DB2Jcc -version
Se isso retornar uma classe não localizada, você está no nível do driver mais antigo e não suporta esse comando ou não emitiu o comando adequadamente. Boas Práticas: Ative o armazenamento em cache da instrução dinâmica no DB2. Para fazer isso, modifique o ZPARMS para CACHEDYN(YES) MAXKEEPD(16K). Dependendo do aplicativo, isso pode representar uma melhora muito significativa no desempenho do DB2. Especificamente, pode ajudar a consulta JDBC e LDAP.bprac
- Aumente o valor das configurações do intervalo de ponto de verificação do DB2 . Para fazer isto, modifique seu ZPARMS para incluir CHKFREQ=xxxxx, em que xxxxx é configurado com um valor alto ao fazer referências. Em sistemas de produção, no entanto, existem outras razões válidas para manter as frequências do ponto de verificação baixas.
//DB2INSTE JOB MSGCLASS=H,CLASS=A,NOTIFY=IBMUSER /*JOBPARM SYSAFF=* //****************************************************************** //* NOME DO JOB = DSNTIJUZ //* //* NOME DESCRITIVO = FLUXO DE JOB DE INSTALAÇÃO //* //* MATERIAIS LICENCIADOS - PROPRIEDADE DA IBM //* 5675-DB2 //* (C) COPYRIGHT 1982, 2000 IBM CORP. TODOS OS DIREITOS RESERVADOS. //* //* STATUS = VERSÃO 7 //* //* FUNÇÃO = DSNZPARM E DSNHDECP UPDATES //* //* PSEUDO-CÓDIGO = //* DSNTIZA ETAPA MONTAR DSN6.... MACROS, CRIAR DSNZPARM //* DSNTIZL ETAPA VINCULAR DSNZPARM DE EDIÇÃO //* DSNTLOG ETAPA ATUALIZAR SENHAS //* DSNTIZP ETAPA MONTAR MÓDULO DE CARREGAMENTO DSNHDECP SOMENTE DADOS //* DSNTIZQ ETAPA VINCULAR MÓDULO DE CARREGAMENTO DSNHDECP DE EDIÇÃO //* DSNTIMQ ETAPA PROCESSAMENTO DO SMP/E PARA DSNHDECP //* //* NOTAS = A ETAPA DSNTIMQ DEVE SER PERSONALIZADA PARA SMP. CONSULTE AS NOTAS //* QUE PRECEDEM A ETAPA DSNTIMQ ANTES DE EXECUTAR ESTE 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, i AUTHCACH=1024, X BINDNV=BINDADD, X BMPTOUT=4, X CACHEDYN=YES, i . . . MAXKEEPD=16000, i . . . DSN6ARVP ALCUNIT=CYL, X . . . DSN6LOGP DEALLCT=(0), X . . . DSN6SYSP AUDITST=NO, X BACKODUR=5, X CHKFREQ=16000000, i 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, i . . . //*