sexta-feira, 5 de fevereiro de 2010

Declaração SQL Cache no Informix Dynamic Server

Introdução

Este artigo descreve as funcionalidades da Declaração do SQL Cache ( SQL Statement Cache SSC)) no IDS. O SSC é uma area na SHARED MEMORY que é usada para armazenar e compartilhar estrutura de dados com declarações semelhantes ao longo das sessões dos usuarios.
Abaixo os beneficios de usar os recursos do SSC:
  • Redução do consumo de memoria porque as estruturas das consultas de dados são compartilhadas entre diferentes usuarios;
  • Processamento mais rapido para a consulta porque as declarações estão presentes no cache, o Servidor de Banco de Dados pode otimizar e pular fases de analise, dando assim melhor resposta as consultas.
 Quando o recurso do SSC esta habilitado, o Servidor de BD faz o seguinte:
  1. Quando um usuario (user1) dispara uma declaração SQL, SGBD verifica o cache para ver se existe ou não uma declaração identica;
  2. Se a declaração não estiver presente no cache, então o SGBD ira analisar, otimizar e executar a declaração. O SGBD ira verificar se a declaração esta qualificada para ser inserida no cache, se tiver tudo ok então a declaração sera inserida em cache;
  3. Quando outro usuario (user2) executar a mesma declaração, o SGBD ira verificar o cache e encontrando essa declaração não ira analisar nem otimizar novamente. Ele somente executara a instrução usando as informações do cache.
Há um conjunto de condições que devem satisfazer uma declaração para que possa ser inserida em cache. Algumas delas incluem:
  1. A declaração deve ser SELECT, UPDATE, DELETE ou  INSERT;
  2. A declaração não deve conter nenhuma rotina definida por usuario;
  3. Tambem não pode conter nenhuma tabela temporaria ou remota;
  4. Não deve conter subconsultas.
Parametros de configuração do SSC

As declarações cache SQL pode ser configurada de acordo com cada aplicação utilizando um conjunto de paramentros. Estes parametros tambem são utilizados para determinarem quais declarações devem ser inseridas no cache. Abaixo faremos uma breve explicação de cada parametro:
  • STMT_CACHE_HITS - Esse parametro é utilizado para especificar o numero de vezes que a consulta pode ser executada antes que o SGBD fazer uma entrada definitiva em cache. Se o numero de vezes que a consulta é executada é inferior ao parametro, então o SGBD fara uma entrada de uma unica chave no cache para esta declaração que contera somente o texto dessa declaração. Para cada execução subsequente, o numero de acessos é incrementado. Quando o numero de vezes que a declaração é executada tornar-se igual ao valor do parametro, a entrada do cache é totalmente completa, contendo a declaração e a estrutura da consulta.
  • STMT_CACHE_SIZE - Essa variavel é usada para especificar o tamanho do cache de instrução. O valor padrão é de 512 kilobytes.
  • STMT_CACHE_NOLIMIT - Esta variavel especifica se deve ou não limitar o tamanho do cache para o valor STMT_CACHE_SIZE. Por padrão, o SGBD vai inserir a declaração, mesmo se o tamanho do cache excede o valor STMT_CACHE_SIZE.
  • STMT_CACHE_NUMPOOL - Quando o SGBD precisa carregar uma entrada completa no cache de instrução, por padrão o server alocara mais memoria em um unico pool. Quando o numero de usuario utilizando a aplicação é muito elevado, isso pode ter um efeito adverso sobre o desempenho. Nesses casos, o numero de pool pode ser configurado com um numero maior usando este parametro.
Usando o utilitario onstat para monitorar o ssc

A opção onstat -g ssc mostrara entradas no cache de instruções. A coluna hits indicara o numero de vezes que a mesma instruação foi executada. Portanto, um valor maior na coluna hits implica que o SSC tem sido utilizado de forma eficaz para compartilhar estruturas de consulta, assim melhorando a performance. A coluna hits corresponde ao parametro de configuração STMT_CACHE_HITS.
A coluna flag indica se a entrada é totalmente carregada ou não. Quando o numero de vezes que uma instrução é executada torna-se valor para a coluna hits, então uma entrada é totalmente feita no cache. Um valor "F" na coluna flag indica que a entrada esta totalmente carregada. Entradas de chave unica, onde apenas declarações testadas são inseridas no cache, são indicados por um "-" na coluna flag. 

Usando o utilitario onmode para configurar os parametros do SSC
Os parametros de configuração podem ser alterados dinamicamente, usando o utilitario onmode.

Voce pode usar a opçao onmode -W para alterar o valor dos parametros SSC conforme abaixo:
onmode -W {STMT_CACHE_NOLIMIT {0|1} | STMT_CACHE_HITS amp;lt;#hitsamp;gt;}

Voce tambem pode ativar, ligar/desligar ou limpar o SSC usando o onmode -e amp;lt;modeamp;gt; utilizando, onde amp;lt;modeamp;gt; := {ENABLE |ON|OFF|FLUSH}. 

Quando o modo SSC esta definido para ENABLE, o SSC é utilizado apenas por sessoes individuais que usam explicitamente pedido do SSC. Isso permite que aplicações que fazem poucas consultas adhoc para tirar vantagem do SSC, sem ter um grande  numeros de consultas odhoc a partir do espaço de residuos de outras aplicações ou de declarações fora do SSC. Uso de sessão SSC atraves de seu ambiente (STMT_CACHE =  1) ou executando a instrução SET STATEMENT CACHE ON.

Continua.....

Nenhum comentário:

Postar um comentário