Fórum Velocidade do Firebird #279624

29/04/2005

0

Uso Delphi 6 e Firebird 1.5

Estou desenvolvendo um sistema onde entre outras coisas, tem orçamento e licitações de vendas (em um único form), quando começa a gravação dos ítens da venda em alguns momentos quando vai abrir uma consulta de um produto para verificação dos dados, demora 1 ou 2 segundos, e a gravação é instantanea.

Mas a partir de ter gravado 50 produtos na mesma venda ele começa a ficar mais lento e passa a demorar as vezes até mais de 10 segundo por consulta e a gravação uns 4.

Isso é comum ao Firebird? Ele é lento assim mesmo?
Tá certo que o cadastro de produtos já tem mais de 6000 produtos, mas nao acho que deveria estar tao lento com tao pouco registros, visto que a capacidade dele é tida como milionária.

Isso pode ser instalação errada, ou alguma outra coisa?
Alguem tem alguma dica? Por favor.

Agradeço antecipadamente qualquer ajuda.

Sandro


Salupe

Salupe

Responder

Posts

30/04/2005

Raserafim

já que a demora é na consulta (leitura) e não na gravação, o problema pode está na falta de índices nos campos em que são feitos as pesquisas. Os índices bem aplicados são essenciais para o bom desempenho em consultas, sendo que mal utilizados podem prejudicar o desempenho, sobre tudo da gravação. Como vc disse que a gravação é instatânea, deduzo que realmente está faltando índice nos campos em que são feitos as consultas.


Responder

Gostei + 0

30/04/2005

Sremulador

como você esta fazendo estas consultas, utiliza query ou table, a localização e por locate ???


Responder

Gostei + 0

01/05/2005

Salupe

estou utilizando ibquery da paleta interbase, por isso nao utilizo indices, já que a própria query os faz no momento necessitado.

Mesmo utilizando query seria bom eu ter indices?

Agradeço antecipadamente qualquer ajuda.


Responder

Gostei + 0

02/05/2005

Gandalf.nho

Claro que vc precisa criar os índices no banco, a query só usa os índices que existem, ela não os cria.


Responder

Gostei + 0

02/05/2005

Salupe

Desculpe a minha falta de informação, mas pra mim a query criava automaticamente o indice a partir do ´order by nome´ por exemplo. Eu achava que utilizando query estava livre da criação e atualização dos índices.

Se nao é assim e precisoutilizar um índice previamente criado, como eu o utilizo e quando o atualizo, e principalmente como indico o índice que será utilizado pela query no seu devido momento, ou seja, quando for chamado uma consulta.

Agradeço antecipadamente qualquer ajuda.


Responder

Gostei + 0

02/05/2005

Vinicius2k

Colega,

A atualização é automática, apenas se vc quiser fazer a antiga ´reindexação´ vc pode desativar e ativar o índice ou efetuar um backup/restore.

Vc não precisa informar a query qual índice utilizar. O próprio IB/FB, através do otimizador de consultas, fará a seleção do melhor índice de acordo com a instrução SQL que lhe for enviada e criará o PLANo de execução para a query.

Se vc tiver ´bons´ índices irá contribuir assustadoramente para a performance das consultas, consequentemente da aplicação.
Em geral e basicamente, crie índices para : colunas utilizadas em ORDER BY e chaves estrangeiras utilizadas nos JOINs.
Um bom índice é um índice de boa seletividade, ou seja, menor número possível de registros com valores identicos dentro da coluna indexada.

Analise a instrução que será executada por uma query da aplicação dentro de uma query de uma ferramenta que permita a análise do PLAN e evite ao máximo o ´NATURAL´.
Isto irá lhe fornececer informações importantes se os índices ´ideais´ estão sendo utilizados.

Veja estes links:
http://www.firebase.com.br/cgi-bin/firebase.cgi/artigo?ID=268
http://www.firebase.com.br/cgi-bin/firebase.cgi/artigo?ID=148

T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar