MUITA LENTIDÃO

21/05/2003

1

Caros colegas. Estou desenvolvento um sistema relativamente grande e deparei com um problema que classifico como grave, espero que voçês possam me ajudar.

Estou utilizando o Delphi6 com Interbase, utilizando os componentes DbExpress (SqlDataSet, ClientDataSet, DataSetProvider, ...)



Estou fazendo um processo de digitação de pedidos. No evento on Create do meu Form, abro todos meus ClientDataSets que vou utilizar. Enquanto estava testando com poucos regsitros nas tabelas, estava funcionando beleza, porém quando tive que abrir a minha tabela de clientes que tem 30.000 registros, demora 45 segundos para abrir as tabelas. isso é um grande problema, pois terei que abrir tabelas muito maior que esta de cliente.

Será que tem outra maneira de abrir estas tabelas ?? Tem outra técnica a ser usada. O meu banco está instalado em um servidor pentium 2 com 256 mb de memória, sei que não é o suficiente para rodar um sistema grande deste jeito, porém não deveria ser tão lento assim, não é verdade ??

Aguardo uma resposta !!
:(


Responder

Posts

21/05/2003

4_olho

Antes de mais nada é preciso descobrir onde está o gargalo : é a rede ? é o HD, é sua rotina ?

De qualquer modo há meios de se ´mascarar´ o problema. Afinal, por quê acha que foram criadas as telas Splash ?

Uma dica é colocar seus datasets em um form DataModule. Abrir este antes do Form principal e já com uma tela Splash sendo exibida ...

Tentar abrir os datasets conforme a necessidade. Talvez dar uma apurada nas suas querys, afinal o Interbase não foi feito para ser usado usando-se todos os registros de uma única vez ...

Imagine seu sistema como a construção de uma casa. Já pensou se você já compra tudo de uma vez ? Não terá espaço para ´manobras´.


Responder

21/05/2003

Jlm

Antes de mais nada é preciso descobrir onde está o gargalo : é a rede ? é o HD, é sua rotina ? De qualquer modo há meios de se ´mascarar´ o problema. Afinal, por quê acha que foram criadas as telas Splash ? Uma dica é colocar seus datasets em um form DataModule. Abrir este antes do Form principal e já com uma tela Splash sendo exibida ... Tentar abrir os datasets conforme a necessidade. Talvez dar uma apurada nas suas querys, afinal o Interbase não foi feito para ser usado usando-se todos os registros de uma única vez ... Imagine seu sistema como a construção de uma casa. Já pensou se você já compra tudo de uma vez ? Não terá espaço para ´manobras´.



Obrigado pela dica, sei que o problema está no meu aplicativo, mas como sou aprendiz não tenho tanto experiencia ainda neste tipo de desenvolvimento.
A respeito das telas Splash eu pergunto .
Seria o correto eu abrir todos as minhas tabelas que seriam usadas no projeto todo durante a exibição deste Splash?
Será que eu não estaria abrindo tabela demais talvez para usar apenas uma ou outra, em um deterinado form do meu sistema?
Pergunto isso porque venho da programação em Clipper e lá tinha muitos problemas quando da abertura de arquivos.?

Desde já agradeço a Dica !!


Responder

21/05/2003

4_olho

Só abra o que estiver usando. É como roupa. Você só veste a que precisa usar no momento. Já pensou colocar várias camisas : uma para o trabalho, outra para o chopinho à noite - vai parecer uma cebola ....

Se tiver usando o Interbase nunca use query do tipo Select * from Arquivo, ou seja, nunca use todos os registros. Gaste um pouco mais de tempo e estudo em seus arquivos e querys. Vai tentando e errando. Uma hora acerta ... Quando era pequeninho você já saiu andando ou engatinhou primeiro ?

Procure ver se suas tabelas estão normatizadas - o que é isto ? É bom estudar um pouco - no site do Clube Delphi tem excelentes apostilas ...

Vai demorar até acertar ? Vai ...., mas em compensação, amanhã você vai ficar ´fera´, ou no mínimo, menos ´aprendiz´ ....


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira