Fórum Tabela inchada #395195
08/02/2011
0
O titulo do tópico ficou meio grotesco, mas é o que de fato está ocorrendo.Tenho um tabela que utilizo somente uma vez no dia, que é o resumo dos registros gerados pelo PAF.O procedimento de inserção de dados nela é igual a todas as outras que faço.Como é de conhecimento de todos os registros do PAF são gerados no micro local e depois enviados ao servidor, quando vou dar um select nos registros ainda não enviados, ele demora uns 30 minutos para retornar, e a tabela tem em torno de 20000 e diariamente não seriam mais que 1000 registros a filtrar.
Se abro a tabela pelo IB e vou navegando pelos registros, ele vai demorando, e se tento dar um select aí trava pelo tempo citado.
Até coloquei o db no mediafire.
Usuário: delphi.select@terra.com.brSenha: delphisel
Select que utilizo:
select * from pafarquivos where coalesce(eserver,0)=0
Para inserir os registros, leio um TStringList com as informações e vou inserindo:
try Trs.TransactionID := 16; Trs.IsolationLevel := xilReadCommitted; Conexao.StartTransaction(Trs); { Gravando os registros gerados automaticamente } with sql_aux99 do begin for iConta:=0 to ArqP.Count-1 do begin if Copy(ArqP.Strings[iConta],1,1) = 'R' then begin CommandText := MontaSQL(1,'pafregistros','','modelo,serie,mfad,caixa,data,registro,strregistro,autentica'); ParamByName('modelo').AsString := RetInfoPAF('imodelomfd') ; ParamByName('serie').AsString := lConfPaf('FAB') ; ParamByName('mfad').AsString := RetInfoPAF('imfad') ; ParamByName('caixa').AsString := RetInfoPAF('icaixa') ; ParamByName('data').Asdate := StringData(cDataMovimento); ParamByName('registro').AsString := Copy(ArqP.Strings[iConta],1,1) ; ParamByName('strregistro').AsString := ArqP.Strings[iConta]; ParamByName('autentica').AsString := MD5Str(ParamByName('modelo').AsString+ ParamByName('serie').AsString+ ParamByName('mfad').AsString+ ParamByName('caixa').AsString+ ParamByName('data').AsString+ ParamByName('registro').AsString+ ParamByName('strregistro').AsString); ParamByName('inclusao').AsString := fMenu.Inclusao; ParamByName('alteracao').AsString := RetDataHora ; ExecSQL; end; end; end; Conexao.Commit(Trs);except Conexao.RollBack(Trs);end;Delphi 7 + Firebird 2.5 + sqlconnection + sqldataset + datasetprovider + clientdataset
attMario
Mario Inacio
Curtir tópico
+ 0Posts
08/02/2011
Marcio Teixeira
Gostei + 0
08/02/2011
Mario Inacio
Não é nem tanto ao conteúdo da coluna "eserver" a causa do problema.Vejo que o banco fica sujo ao finalizar a gravação, se faço um backup/restore funciona normal.
Com o banco do jeito que está agora, o mesmo que está no mediafire, ele está inchado, qualquer comando nesta tabela, resultará em lentidão excessiva.
Somente depois de fazer um backup/restore volta ao normal.
De repente tento fazer o backup/restore, criar o indice e ver como fico no proximo dia?
Gostei + 0
08/02/2011
Marco Salles
Gostei + 0
08/02/2011
Marcio Teixeira
Gostei + 0
14/03/2011
Mario Inacio
Resolvi o problema criando um indice para um Campo, mesmo não usando o mesmo.
Obrigado pela atenção.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)