[firebase-br] Performance Firebird

Magno System magno em speet.com.br
Qua Mar 19 10:38:47 -03 2008


Se eu não me engando, existe a propriedade PACKETRECORDS do clientdataset 
onde você define o número máximo de registros nos quais será feito o FETCH. 
Ou seja, se você colocar 100 por exemplo, o clientdataset vai atualizando de 
100 em 100 a medida que for necessário.

----- Original Message ----- 
From: "Braytiner" <braytiner em gmail.com>
To: <lista em firebase.com.br>
Sent: Wednesday, March 19, 2008 10:22 AM
Subject: [firebase-br] Performance Firebird


Olá pessoal,

  possuo uma tabela com aproximadamente 14000 registros, com aproximadamente
37 campos. Na minha aplicação Delphi (uso o DBXPress + ClientDataSet +
Firebird 2.0) realizo um select trazendo todos os registros (utilizo a
QuantumGrid que permite ao usuário realizar filtros e personalizações dentro
de minha aplicação, por isso trago todos os registros), o tempo de retorno
está sendo de 1 minuto. Estive lendo alguns posts vendo alguns casos de
selects em tabelas grande que retornam muito mais rápido.

Estou usando índices para as colunas usadas em Joins, em ordenações, e estas
com baixo nível de repetição. Aumentei o número da página de dados para 8192
aumentei o cache do banco para 16000, resultando em 128 Mb RAM disponível,
mas não notei melhoras.

Compilei algumas dicas sobre performance as quais já vi e gostaria que o
pessoal pudesse apontar o que é verdade, o que é lenda, creio que vai ser
muito útil para todos aqui.

Gostaria de saber como realmente otimizar o FB e se estou fazendo algo
errado gostaria de saber para que possa melhorar a performance da aplicação,
já vi e revi vários fatores

vejam abaixo o SELECT que estou realizando:

SELECT PRO_ID, PRO_CODIGO, PRO_DESCRICAO, PRO_RESUMIDA,
       PRO_OBS, GRU_CODIGO, SUB_CODIGO, PRO_ULTFOR,
       PRO_FABRICANTE, PRO_UNIDADE, PRO_EMBALAGEM,
       PRO_VALIDADE, PRO_ALIQUOTA, PRO_SITUACAO,
       PRO_COMISSAO, PRO_MARKUP, PRO_MARGEM,
       PRO_CLASFISC, PRO_SITTRIB, PRO_PESOBRU, PRO_PESOLIQ,
       PRO_ULTENT, PRO_ULTSAI, PRO_ULTQTD, PRO_ESTMIN,
       PRO_ESTPEDIDO, PRO_ESTRESERVA, PRO_ESTFISICO,
       PRO_ESTESTIMADO, PRO_PRCOMPRA, PRO_PRCUSTO,
       PRO_PRMEDIO, PRO_PRVENDA, PRO_PRPROMO1,
       PRO_PRPROMO2, PRO_DTTRANSF, PRO_DTALTPRECO
FROM PRO


Aqui estão as dicas que peguei em alguns artigos:


- No Delphi, mudar evento OnGet.TableName dos data set providers (TableName
:= 'Nome da tabela a ser alterada'

- Usar SubSelects no lugar de joins

- Adicionar índices aos campos utilizados em Where (que não possuem alto
nível de repetição)

- Usar Triggers ao invés de Foreign Keys

- Usar Stored Procedures para incluir, editar e excluir dados

- No Delphi em DataSetProviders usar Fetch Blobs

- Aumentar DefaultDbCache (firebird.conf)

- É aconselhável que se defina o segmento de um BLOB para o mesmo tamanho da
página.
  Se ambos o segmento do BLOB e a página estão definidos em 4096, queries
com vários blobs podem atingir a
  velocidade de transferência de 20MB/s.

- Ao invés de utilizar um DNS, use o arquivo HOSTS em cada terminal para
determinar resolver os IPs

- Criar índices para campos usados em ordenação e em Joins

- Desativar e reativar índices temporariamente

- Desabilite a limpeza automática (automatic garbage collection), usando
GFIX -h 0, em favor da limpeza programada (scheduled database sweep), usando
GFIX -s.

- Recalcule a seletividade do índice STATISTICS INDEX nome;)

- Alterar ProcessPriorityLevel = 0 para 2 no firebird.conf

- Alterar TCP REMOTE BUFFER em firebird.conf (este configura o tamanho dos
pacotes de dados enviados pela rede)

----
Braytiner



______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: 
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa


-- 
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.516 / Virus Database: 269.21.7/1329 - Release Date: 14/3/2008 
12:33






Mais detalhes sobre a lista de discussão lista