Notas sobre o Release


10.5 Variáveis de Ambiente e Registro do DB2

10.5.1 Correções de Variáveis de Desempenho


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.

10.5.2 Novos Parâmetros para Variável de Registro DB2BPVARS

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

10.5.3 Correções e Inclusões nas Variáveis de Registro Diversas

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.

Tabela 7. Variáveis Diversas

Nome da Variável Sistema Operacional Valores
Descrição
DB2_NEWLOGPATH2 ALL Default=NO

Valores: YES ou NO

Esse parâmetro permite que você especifique se um caminho secundário deve ser utilizado para implementar o registro duplo. O caminho utilizado é gerado anexando-se um "2" ao valor atual do parâmetro de configuração de banco de dados logpath.
DB2_ROLLFORWARD_NORETRIEVE
ALL Default=(not set)

Valores: YES ou NO

Se o parâmetro de configuração de banco de dados USEREXIT for ativado, arquivos de registro são automaticamente recuperados do archive durante as operações de avanço. A variável DB2_ROLLFORWARD_NORETRIEVE permite que você especifique se as operações de avanço não devem recuperar arquivos de registro do archive. Essa variável é desativada por padrão. Defina essa variável como YES se você não deseja que o avanço recupere arquivos de registro automaticamente. Por exemplo, defina a variável como YES em uma configuração hot-standby quando desejar evitar que arquivos de registro criados por um aplicativo ruim corrompam o sistema de backup.

10.5.4 Correções e Inclusões nas Variáveis de Registro Gerais

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.
Nota:
Embora o uso de recursos e tempo de otimização possa ser reduzido, o risco de produzir um plano de acesso de dados abaixo do ideal aumenta.
  • Se definido como NO

    O otimizador não altera suas técnicas de otimização.

  • Se definido como YES

    Se o nível de otimização for 5 (o padrão) ou inferior, o otimizador desativa algumas técnicas de otimização que podem consumir tempo de preparo e recursos significantes, mas que geralmente não produzem um melhor plano de acesso.

    Se o nível de otimização for exatamente 5, o otimizador recua ou desativa algumas técnicas adicionais, o que pode mais adiante reduzir a utilização de recursos e tempo de otimização, mas também aumentar o risco de um plano de acesso abaixo do ideal. Para níveis de otimização inferiores a 5, algumas dessas técnicas podem não estar em efeito de qualquer modo. Se estiverem, porém, elas permanecem em efeito.

  • Se definido como qualquer número inteiro

    O efeito é o mesmo de quando o valor é definido como YES, com o seguinte comportamento adicional para consultas dinamicamente otimizadas no nível 5: se o número total de junções em qualquer bloco de consultas exceder o definido, então, o otimizador vai para enumeração "greedy join" em vez de desativar técnicas de otimização adicionais como descrito acima para o nível de otimização 5, o que implica que a consulta será otimizada em um nível similar ao nível de otimização 2.

    Para obter mais informações sobre enumerações "greedy" e "dynamic join", veja "SearchStrategies for Selecting Optimal Join" em Administration Guide: Performance.

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.


[ Início da Página | Página Anterior | Próxima Página | Índice | Índice Remissivo ]