[firebase-br] Performance Firebird

Cícero Silva Foscarini cicero em puxtreme.com.br
Qua Mar 19 11:40:58 -03 2008


Tu disseste que utiliza a QuantumGrid por ela permitir que o usuario 
faca os filtros desejados, certo? Creio que seja melhor tu obrigar o 
usuario a fazer os filtros desejados antes de buscar os dados, ai sim tu 
estara utilizando as vantagens das sql :)

Abracos.

Braytiner escreveu:
> 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
> 





Mais detalhes sobre a lista de discussão lista