4 min. p dar um Post em tabela volumosa
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
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
Curtidas 0
Respostas
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?
Você pode detalhar melhor alguns detalhes, como: Tipo e velocidade da rede, componentes de acesso aos dados, descrição do hardware?
GOSTEI 0
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.
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
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+
Outra coisa, vc tem triggers nessa tabela?
T+
GOSTEI 0
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:
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
01/10/2004
Não entendi. Vc não pode fazer um simples insert ou update nessa tabela no IBConsole ou ISQL??
T+
T+
GOSTEI 0
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
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
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
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
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