4 min. p dar um Post em tabela volumosa

Firebird

01/10/2004

Bom dia!
Amigo, ajudem-me com um problema.
Tenho uma tabela com 43200 registros mais ou menos, com uma chave primária de 5 campos dos 32 que existem nela e com indice para um campo que faz parte da chave primária.
Tanto no Delphi 5 quanto no Delphi 7 CLX, quando dou um Post e/ou ApplyUpdates no Query ou ClientDataSet o processamento demora quase 4 minutos, quando se conclui.
Alguém poderia me orientar a respeito de uma possível solução para melhorar a performance do programa com essa tabela?? Filtrar os registros não tem me adiantado..
Agradeço desde já a atenção.

Digaum


Rodsrabbit

Rodsrabbit

Curtidas 0

Respostas

Aroldo Zanela

Aroldo Zanela

01/10/2004

Colega,

Você pode detalhar melhor alguns detalhes, como: Tipo e velocidade da rede, componentes de acesso aos dados, descrição do hardware?


GOSTEI 0
Rodsrabbit

Rodsrabbit

01/10/2004

O Hardware eh bom, Athlon XP, 1,4Ghz, 256MB de Memoria, o acesso eh feito localmente.
No Delphi 5 uso o RXQuery, RXDBGrid e DataSource, no Delphi 7 CLX uso os componentes da DataAccess + o SqlDataSet da dbExpress.


GOSTEI 0
Afarias

Afarias

01/10/2004

Faça um INSERT ou UPDATE ´direto na tabela´ usando IBConsole ou ISQL e veja o q ocorre.

Outra coisa, vc tem triggers nessa tabela?


T+


GOSTEI 0
Rodsrabbit

Rodsrabbit

01/10/2004

Não, eu nao tenho Triggers..
Estive pensando sim em montar o SQL dentro do Delphi e executar, mas isso daria um trabalho imenso pois nem todos os campos da tabela sao preenchidos, daí eu teria que prever todos os casos possíveis para os cadastros. E no caso dos updates / edits daria mais trabalho ainda.
:cry:


GOSTEI 0
Afarias

Afarias

01/10/2004

Não entendi. Vc não pode fazer um simples insert ou update nessa tabela no IBConsole ou ISQL??


T+


GOSTEI 0
Isaiasbass

Isaiasbass

01/10/2004

Tive um problema parecido com o Post em tabelas com milhares de registros.

Eu uso IBUpdate no Delphi 7 e IB 6.0

Pra resolver, antes de qq insert abra a table com um sql q lhe retorne poucos registros ou nenhum, tipo: ´select * from Table1 where Codigo = 0´ , isso lhe trará uma resposta sem registro e o seu programa dará o insert e post como se fosse vazio. Tudo leve, nem parece q o Servidor tá lotado hehehe


GOSTEI 0
Afarias

Afarias

01/10/2004

Tive um problema parecido com o Post em tabelas com milhares de registros.


Na verdade seu problema não era o INSERT mas a carga dos registros da base. Este é um ´equívoco´ muito comum principalmente para desenvolvedores q vem de gerenciadores de arquivo (como DBase) para sistemas C/S



T+


GOSTEI 0
Rodsrabbit

Rodsrabbit

01/10/2004

Pessoal, quero agradecer a todos os posts e dizer que todos me ajudaram a investigar e descobrir o real motivo da lentidão.
Foi criada uma trigger numa tabela relacionada, que é acionada ao alterar um campo dessa tabela. Quando todas as tabelas que tem chave estrangeira para essa que contém a trigger, dão um post, estranhamente a trigger é acionada, fazendo alteração em TODOS os registros de TODAS AS TABELAS RELACIONADAS. Serviço de eficiência de curto prazo executado por algum porquinho aqui da empresa rs...
Valeu pessoal, pela força.
Agora vou destroçar essa trigger mal feita e colocar isso no código, eh mais simples.

:o


GOSTEI 0
POSTAR