Tabela 5. Variáveis de Desempenho
Nome da Variável | Sistema Operacional | Valores |
---|---|---|
Descrição | ||
DB2_BINSORT | Todos | Default=NO
Valores: YES ou NO |
Permite um novo algoritmo de ordenação que reduz o tempo da CPU e o tempo
decorrido de ordenações. Esse novo algoritmo estende a técnica de
ordenação de números inteiros extremamente eficiente do DB2 UDB para todas
ordenações de tipos de dados, como BIGINT, CHAR, VARCHAR, FLOAT e DECIMAL,
assim como combinações destes tipos de dados. Para ativar esse novo
algoritmo, utilize o seguinte comando:
db2set DB2_BINSORT = yes | ||
DB2_BLOCK_BASED_BP
| Solaris Operating Environment | Default=None
Valores: dependente de parâmetros |
Especifica os valores necessários para criar uma área de blocos em um
conjunto de buffers. O ID do conjunto de buffers é necessário e pode
ser visto na coluna BUFFERPOOLID da exibição de catálogo do sistema
SYSCAT.BUFFERPOOLS. O número de páginas a serem alocadas no
conjunto de buffers para a E/S baseada em bloco deve ser
fornecido. O número de páginas a serem incluídas em um bloco é
opcional, com um valor padrão de 32.
O formato para a utilização dessa variável de registro é: DB2_BLOCK_BASED_BP=BUFFER POOL ID,BLOCK AREA SIZE,[BLOCK SIZE];... Vários conjuntos de buffers podem ser definidos para "com base em bloco" utilizando-se a mesma variável com ponto-e-vírgula separando as entradas. O valor para BLOCK SIZE pode variar de 2 a 256. Se o BLOCK SIZE não for fornecido, o padrão utilizado é 32. Se o BLOCK AREA SIZE especificado for maior que 98% do tamanho total do conjunto de buffers, o conjunto de buffers não se baseará em bloco. É interessante que sempre se tenha alguma parte do conjunto de buffers na área baseada em página do conjunto de buffers porque há a possibilidade de que páginas individuais sejam requeridas mesmo se a maior parte da E/S no sistema for de pré-busca em seqüência. Se o valor especificado para BLOCK AREA SIZE não for um múltiplo de BLOCK SIZE, ele será reduzido para o limite mais próximo do tamanho do bloco. Para obter mais informações sobre E/S baseada em bloco, consulte a seção 10.2.1, Conjunto de Buffers com Base em Bloco. | ||
DB2_NO_FORK_CHECK
| UNIX | Default=OFF
Valores: ON ou OFF |
Quando essa variável está "ON", o processo cliente não se protegerá contra um aplicativo que faça cópia do processo a ser executado (chamado bifurcação). Quando a bifurcação ocorre, os resultados são imprevisíveis. Os resultados podem variar de nenhum efeito a alguns maus resultados, a algum código de erro sendo retornado, a um trap no aplicativo. Se você está certo de que seu aplicativo não bifurca e quer desempenho melhor, você deve mudar o valor dessa variável para "ON". | ||
DB2_MINIMIZE_LIST_PREFETCH | Todos | Default=NO
Valores: YES ou NO |
Pré-captura da lista é um método especial de acesso à tabela que envolve
recuperar os RIDS qualificados do índice, ordenando-os por número de página e,
em seguida, fazendo uma pré-captura das páginas de dados.
Às vezes o otimizador não tem informações precisas para determinar se a pré-captura da lista é um bom método de acesso. Isso pode ocorrer quando seletividades de predicados contêm marcadores de parâmetros ou de variáveis de host que impedem o otimizador de utilizar estatísticas de catálogo para determinar a seletividade. Essa variável de registro impedirá que o otimizador considere pré-captura de lista nessas situações. | ||
DB2_INLIST_TO_NLJN | Todos | Default=NO
Valores: YES ou NO |
Em algumas situações, o compilador de SQL pode reescrever um predicado de
lista IN para uma junção. Por exemplo, a seguinte consulta:
SELECT * FROM EMPLOYEE WHERE DEPTNO IN ('D11', 'D21', 'E21')pode ser escrita como: SELECT * FROM EMPLOYEE, (VALUES 'D11', 'D21', 'E21) AS V(DNO) WHERE DEPTNO = V.DNO Essa versão pode fornecer melhor desempenho se houver um índice em DEPTNO. A lista de valores seria acessada primeiro e juntada a EMPLOYEE com um loop aninhado, utilizando o índice para aplicar o predicado de junção. Às vezes o otimizador não tem informações precisas para determinar o melhor método de junção para a versão reescrita da consulta. Isso pode ocorrer se a lista IN contiver marcadores de parâmetros ou variáveis do host, que impeçam o otimizador de utilizar estatísticas para determinar a seletividade. Essa variável de registro fará com que o otimizador favoreça junções de loop aninhado para juntar a lista de valores, utilizando a tabela que contribui com a lista IN como a tabela interna da junção. |
A variável de registro DB2BPVARS suporta dois novos parâmetros: NUMPREFETCHQUEUES e PREFETCHQUEUESIZE. Esses parâmetros são aplicáveis a todas as plataformas e podem ser utilizados para melhorar a pré-busca de dados de conjunto de buffer. Por exemplo, considere a pré-busca sequencial em que o PREFETCHSIZE desejado é dividido em pedidos de pré-busca PREFETCHSIZE/EXTENTSIZE. Neste caso, pedidos são colocados em filas de pré-busca a partir das quais servidores de E/S são despachados para executar E/S assíncrona. Por padrão, o DB2 mantém uma fila de tamanho máx ( 100 , 2*NUM_IOSERVERS ) para cada partição de banco de dados. Em alguns ambientes, o desempenho melhora com mais filas, filas de tamanhos diferentes ou ambos. O número de filas de pré-busca deve ter pelo menos metade do número de servidores E/S. Ao definir esses parâmetros, considere outros parâmetros, como, por exemplo, PREFETCHSIZE, EXTENTSIZE, NUM_IOSERVERS, tamanho do conjunto de buffers e DB2_BLOCK_BASED_BP, bem como as características da carga de trabalho, como, o número de usuários atuais.
Se você achar que os valores padrão são muito pequenos para o seu ambiente,
primeiramente, aumente os valores aos poucos. Por exemplo, você pode
definir NUMPREFETCHQUEUES=4 e PREFETCHQUEUESIZE=200. Altere esses
parâmetros de forma controlada, para que você possa monitorar e avaliar os
resultados das alterações.
Tabela 6. Resumo dos Novos Parâmetros
Nome do parâmetro | Valor padrão | Intervalo válido |
---|---|---|
NUMPREFETCHQUEUES | 1 | 1 para NUM_IOSERVERS
se for definido como inferior a 1, ajuste para 1 se for definido como superior a NUM_IOSERVERS, ajuste para NUM_IOSERVERS |
PREFETCHQUEUESIZE | máx.(100,2*NUM_IOSERVERS) | 1 para 32767
se for definido como inferior a 1, ajuste ao padrão se for definido como superior a 32767, ajuste a 32767 |
A variável de registro DB2_NEWLOGPATH2 está disponível para
todos os sistemas operacionais. Uma nova variável,
DB2_ROLLFORWARD_NORETRIEVE, foi introduzida. As informações corretas
para as duas variáveis aparece abaixo.
Uma nova variável, DB2_REDUCED_OPTIMIZATION, foi introduzida.
Tabela 8. Variável de Registro Geral
Nome da Variável | Sistema Operacional | Valores |
---|---|---|
Descrição | ||
DB2_REDUCED_OPTIMIZATION | ALL | Default=NO
Valores: YES, NO ou qualquer número inteiro |
Essa variável de registro permite que você desative algumas das técnicas
de otimização utilizadas em níveis de otimização específicos. Se você
reduzir o número de técnicas de otimização utilizadas, reduzem-se tempo e
recursos utilizados durante a otimização.
Observe que a redução de otimização dinâmica no nível de otimização 5, como descrito em "Adjusting the Optimization Class", em Administration Guide: Performance, tem precedência sobre o comportamento descrito para o nível de otimização de exatamente 5 quando DB2_REDUCED_OPTIMIZATION é definido como YES, bem como sobre o comportamento descrito para a definição como inteiro. |