Analisando o Buffer Cache do Informix
Autor: Ask Pontes | Publicado: 2010-05-26T08:12:00-07:00

Olá,Hoje vou postar um recurso que hoje em dia é pouco utilizado, como o preço de memória caiu não é mais usual a análise da ocupação do buffer cache no dia a dia do DBA, é feita apenas a valição do PCT de Read/Write, está formula funciona mas não em todos os casos.Vamos lá, o primeiro passo é executar o onstat -P que irá exibir um output conforme abaixo:partnum  total    btree    data     other    resident dirty0        215      8        158      49       0        581048578  2        1        1        0        0        01048579  9        5        4        0        0        01048584  4        2        2        0        0        01048585  2        1        1        0        0        01048747  1        1        0        0        0        03145776  60       8        52       0        0        09437190  177      177      0        0        0        010485762 26826    0        26826    0        0        0.......Totals:  300000   53097    246852   51       60       3444Vejam a ultima coluna nomeada como DIRTY, calcule quanto esse coluna representa do total de paginas do buffer cache, se este valor for muito alto para uma tabela isto indica uma aplicação não performatica e deve ser revista.Outro ponto é a coluna DATA, esta indica a quantidade de paginas de dados alocadas para a tabela , se este valor for igual ao total de paginas alocadas isto indica que ou a tabela sofre sequential scan ou tem alguma aplicação não performática acessando a mesma, causando a HIGH_Priority na LRU mantendo a mesma residente em memória.A coluna RESIDENT indica que foi executado um comando para forçar a residência da tabela em memória, a sintaxe do comando é:set table your_table memory_resident/set index your_index memory_resident Lembre-se que este comando deve ser usado em casos extremos, se você usou se resolveu seu problema já é indicio de que há algo errado, não devemos fazer o uso sem controle deste recurso.A coluna BTREE indica a quantidade de paginas de indices, para identificarmos o objeto que está alocado no buffer cache devemos pegar a coluna PARTNUM e pesquisar na sysmaster:systabnames conforme abaixo:select tabname, ti_nrows, ti_nptotal from sysmaster:systabnames, sysmaster:systabinfowhere partnum=1048585Lembre-se , indices detachados ou particionados também possuem partnum portanto no onstat -P temos o resumo de utilização de partitions, sendo tabelas e indices.Há alguns anos desenvolvi um script e postei no Repositório do IIUG, o mesmo está no link:http://www.iiug.org/software/archive/mon_bufferBy the way, dentro do repositorio do IIUG podemos encontramos muito scripts interessantes, este foram desenvolvidos por DBAS em situações reais do dia-a-dia de um DBA.Segue abaixo o link:http://www.iiug.org/software/index_DBA.htmlA partir do Informix 11 temos é possivel configurar multiplos buffers, um para cada tamanho de pagina (4K, 8K ,16K), para ambientes OLTP é recomendado o uso de paginas de 8K e para DSS/DW é recomendado o uso de páginas de 16K.O importante para o DBA é ter o conceito do funcionamento da buffer cache, seguindo este artigo teriamos outras coisas para estudar (LRU, LIGHT SCAN, LIGHT APPEND) mas isto ficará para outro post.Vagner