performance

Como identificar problemas de performance / lentidão

Quando temos um banco de dados (seja ele Informix, Oracle, SqlServer, MySql, Postgre, DB2, Sybase ou outro) que está apresentando lentidão não proporcional a carga do sistema (usuários, dados) e capacidade de processamento do hardware (CPU, memória e I/O de disco) o trabalho de identificar a causa desta lentidão é algo que considero um trabalho de detetive. Resolver esta lentidão já é um outro problema pois você poderá depender de terceiros.

Neste artigo não tenho como passar todas as técnicas e detalhes de como realizar este trabalho, mas irei passar algo como um checklist do que você deve verificar.

Alguns cuidados com tabelas fragmentadas por expressão


Trabalhar com tabelas/indices fragmentados pode ajudar muito em situações como:

  • Tabelas/indices grandes com mais de 32 GBytes ou 16 milhões de registros
  • Performance de I/O para acesso a dados de Históricos
  • Performance de I/O paralelo (set pdqpriority) em diferentes discos (fisicos).
  • Expurgar dados antigos do banco sem necessidade de realizar longas paradas ou sobrecarga

Vantagens e desvantagens do DIRECT_IO

DIRECT_IO é uma alternativa a utilização de Cooked File e RAW devices.
Ele é um recurso de Sistema Operacional + File System que permite que a aplicação faça a gravação de dados diretamente no device, ignorando o cache de file system.

Onde o banco gera as tabelas temporárias

Tabelas temporárias no Informix são únicas na sessão em execução , são automaticamente excluídas quando a sessão finaliza , mesmo em caso de interrupção abrupta da conexão ou execução da instancia.

Testes práticos de performance com FET_BUF_SIZE e opção "b" do SQLHOSTS

Este artigo descreve os resultados de alguns testes de performance que realizei quando parametrizado a váriavel de ambiente FET_BUF_SIZE e opção "b" do SQLHOSTS. Estes testes estão relacionados ao throughtput de rede

Performance com HDR em ambiente não favorável

Antes quero lembrar que a configuração de alta disponibilidade com recurso de HDR está disponível desde a versão 7.3 do Informix e devido sua arquitetura exige boa capacidade de comunicação entre as maquinas além de bom processamento na maquina secundária.

Quando criado um índice baseado em uma função (UDF) quais os cuidados a tomar?

Até a versão 11.10 não foi possível identificar como executar um update statistcs especifico para o índice da função.

O buffer especificado pelo FET_BUF_SIZE é compartilhado entre os cursores?

O objetivo aqui é identificar como o FET_BUF_SIZE trabalha quando houver mais de um cursor de insert ou update. Se todos os cursores compartilham o mesmo buffer ou não (insert buffer) .

Este teste é importante para o desenvolvedor em situações que esta variável ( FET_BUF_SIZE ) é parametrizado com intuição de melhorar performance da aplicação que realiza muita inclusão de dados.

Configurando o cache de dicionário de dados

O cache de dicionário de dados é utilizado para armazenar as informações de colunas (nomes e tipos) das tabelas acessadas.

Estas recomendações são baseadas em documentações como manuais e inf

Configurando o cache de distribuição de dados

O Cache de distribuição armazena os binários de estátisticas gerados pelo comando "UPDATE STATISTICS MEDIUM/HIGH".
Para um banco de dados grande com relação a capacidade da maquina (memória/processamento/IO), esta configuração poder ter efeito na performance, pois toda SQL executada no banco de