ClientDataset com DBF
Pessoal.
Uso banco de dados DBF no meu programa.
Tenho uns clientes que estao com um volume muito grade de dados, ai esta uito lento e trava as vezes chegando ate mesmo a nao gravar as nots fiscais qdo e cadastrada tendo q tentar cadastrar ate dar certo.
A solucao seria mudar de bd no caso Interbase por exemplo, so q nao to com tando tempo.
Gostaria de saber se eu usar o ClientDataset com DBF melhora o desempenho, se tem algum problema na gravacao dos dados.
Atenciosamente
agradeco a atencao.
Uso banco de dados DBF no meu programa.
Tenho uns clientes que estao com um volume muito grade de dados, ai esta uito lento e trava as vezes chegando ate mesmo a nao gravar as nots fiscais qdo e cadastrada tendo q tentar cadastrar ate dar certo.
A solucao seria mudar de bd no caso Interbase por exemplo, so q nao to com tando tempo.
Gostaria de saber se eu usar o ClientDataset com DBF melhora o desempenho, se tem algum problema na gravacao dos dados.
Atenciosamente
agradeco a atencao.
M@rcelo
Curtidas 0
Respostas
Dopi
02/03/2005
Provavelmente NAO... pois quem cotinuará gravando fisicamente no DBF será o BDE. Verifique se está tudo correto no BDE.
Lembre-se que arquivos DBF´s que possuem muitos registros ´excluidos´ ficam lentos, pois o DBF não exclui fisicamente o arquivo até vc fazer um PACK no mesmo... Experimente fazer um PACK nas tebelas DBF...
Veja esse típoco: http://forum.devmedia.com.br/viewtopic.php?t=19181&highlight=pack+dbf
Lembre-se que arquivos DBF´s que possuem muitos registros ´excluidos´ ficam lentos, pois o DBF não exclui fisicamente o arquivo até vc fazer um PACK no mesmo... Experimente fazer um PACK nas tebelas DBF...
Veja esse típoco: http://forum.devmedia.com.br/viewtopic.php?t=19181&highlight=pack+dbf
GOSTEI 0
M@rcelo
02/03/2005
OK
ja tenho uma rotina de reinexa onde isto e feito.
Quando o usuario entra para fazer um cadastro eu abro a tabela (que e grande) para fazer a insersao de registros, o que gera um trafego grande na rede e faz ficar lento pros outros usuarios.
Eu gostaria de saber se por exemplo
eu ligar uma Query com parametros num Provider com um Clientdataset
para que traga o minimo de registros ou nenhum, so para eu fazer a Insersao de registros (dando um Applyupdates) se isso gera menos trafego na rede e agilizaria o processo.
Usando ate mesno o CliendDataset para buscar dados para gerar relatorios.
Obrigado pela atencao
ja tenho uma rotina de reinexa onde isto e feito.
Quando o usuario entra para fazer um cadastro eu abro a tabela (que e grande) para fazer a insersao de registros, o que gera um trafego grande na rede e faz ficar lento pros outros usuarios.
Eu gostaria de saber se por exemplo
eu ligar uma Query com parametros num Provider com um Clientdataset
para que traga o minimo de registros ou nenhum, so para eu fazer a Insersao de registros (dando um Applyupdates) se isso gera menos trafego na rede e agilizaria o processo.
Usando ate mesno o CliendDataset para buscar dados para gerar relatorios.
Obrigado pela atencao
GOSTEI 0
Dopi
02/03/2005
Usar Query com DBF gera um trafego enorme na rede... pois o BDE irá criar tabelas temporárias com o resultado da query.
Use o TTable mesmo, pois nesse caso o S.O. gerencia o acesso ao arquivo, ao invez de ´baixar´ todo ele...
A exemplo. tenho bases de dados em DBFs (Clipper) com mais de 300.000 registros acessando sem problemas.
Use o TTable mesmo, pois nesse caso o S.O. gerencia o acesso ao arquivo, ao invez de ´baixar´ todo ele...
A exemplo. tenho bases de dados em DBFs (Clipper) com mais de 300.000 registros acessando sem problemas.
GOSTEI 0
M@rcelo
02/03/2005
Ok
Obrigado
Obrigado
GOSTEI 0
M@rcelo
02/03/2005
So +1 duvida
mesmo se eu der um slect do tipo
select campo1 from tabela where campo1=´xxx´;
mesmo neste caso é retornado todo arquivo em forma de arquivo temporario para exibir no cds.
Obrigado
mesmo se eu der um slect do tipo
select campo1 from tabela where campo1=´xxx´;
mesmo neste caso é retornado todo arquivo em forma de arquivo temporario para exibir no cds.
Obrigado
GOSTEI 0
Dopi
02/03/2005
Nao todo arquivo. Mas todos os registros que satisfação a condição campo1=´xxx´ ... Se forem poucos registros (1 a 100) fica rápido, caso contrário fica lento, mesmo usando IB/FB. Depende muito também do tamanho do registro.
Ou seja, a programação usando Select (Client / Server) deve sempre que possível retornar poucos registros.
No caso de DBFs em que não existe um Banco de Dados, o BDE faz o papel de banco de dados e cria arquivos temporários com resultados das querys...
Veja esse artigo do ´Aroldo Zanela´ sobre arquivos tremporários
http://www.forumweb.com.br/artigos/artigos.php?action=file&id=293
Ou seja, a programação usando Select (Client / Server) deve sempre que possível retornar poucos registros.
No caso de DBFs em que não existe um Banco de Dados, o BDE faz o papel de banco de dados e cria arquivos temporários com resultados das querys...
Veja esse artigo do ´Aroldo Zanela´ sobre arquivos tremporários
http://www.forumweb.com.br/artigos/artigos.php?action=file&id=293
GOSTEI 0