Fórum Problema de performace resolvido. Mas..... #40959
15/12/2003
0
Prezados colabores
Há quase dois mesms venho neste forum solcitar apoio para resolver um problema no meu sistema. O probelma era o seguinte: o sistema iniciava vendendo bem mais com o volume de vendas comecava a ficar lento até não poder mais. Ai era necessário reinicar a máquina para resolver o problema. Vcs me dera várias informaçoes sobre como resolver mas não tive exito. Resolvi então executar cada operação no sistema e na gravaçã encontrei o trecho que estava dando problema. Veja abaixo
Update Estoque SET Estoque.Ultima_Venda = :sData,
Estoque.Ultima_Movimento = :sData
Where Estoque.Codigo_Filial = :iFilial
And Exists (Select Orcamento_Tmp.Codigo_Produto From Orcamento_Tmp
Where Usuario = :sUsuario
And Estoque.Codigo_Produto = Orcamento_Tmp.Codigo_Produto
And Tipo_Item = ´V´);
Tirei esta instrução e pronto, resolveu. Tentei esta trigger tambem:
Set Term ^;
Create Trigger Atu_Data_Movimento_Venda For Venda_Itens Before Insert As
Begin
Update Estoque SET Estoque.Ultima_Venda = New.Data,
Estoque.Ultima_Movimento = New.Data
Where Estoque.Codigo_Filial = New.Codigo_Filial
And Estoque.Codigo_Produto = New.Codigo_Produto
And New.Tipo_Venda_Troca = ´V´;
End ^
Set Term ^ ;
Mas tambem tive o mesmo problema de lentidão. Isto é, o sistema comeca bem mais vai degradando a cada venda usando qualquer uma das instruções acima. Tenho um índice e retirando este indice a performance até melhora mais o probelma continua.
[b:f752414985]A minha pergunta é porque esta procedure ou trigger acima consome tanto recurso que o banco de dados fica lento e quando reinciado volta ao normal ? Usando o programa ibperformance verifiquei que com a procedure ou trigger acima o sistema começa a consumir memory buffer cache de forma abusurda. Como exemplo fazendo testes com mil vendas e com a procedure acima ele foi para 900.000.000 sem a procedure foi para 17.000.000. Usei diversas versões do firebird até a ultima 1.5. [/b:f752414985]
Assim embora resolvido não desejo que outros colabores passem pela mesma angustia que passei. Gostaria então de alguma opinão sobre o assunto.
Mais uma vez Grato
Marcos Roberto
Há quase dois mesms venho neste forum solcitar apoio para resolver um problema no meu sistema. O probelma era o seguinte: o sistema iniciava vendendo bem mais com o volume de vendas comecava a ficar lento até não poder mais. Ai era necessário reinicar a máquina para resolver o problema. Vcs me dera várias informaçoes sobre como resolver mas não tive exito. Resolvi então executar cada operação no sistema e na gravaçã encontrei o trecho que estava dando problema. Veja abaixo
Update Estoque SET Estoque.Ultima_Venda = :sData,
Estoque.Ultima_Movimento = :sData
Where Estoque.Codigo_Filial = :iFilial
And Exists (Select Orcamento_Tmp.Codigo_Produto From Orcamento_Tmp
Where Usuario = :sUsuario
And Estoque.Codigo_Produto = Orcamento_Tmp.Codigo_Produto
And Tipo_Item = ´V´);
Tirei esta instrução e pronto, resolveu. Tentei esta trigger tambem:
Set Term ^;
Create Trigger Atu_Data_Movimento_Venda For Venda_Itens Before Insert As
Begin
Update Estoque SET Estoque.Ultima_Venda = New.Data,
Estoque.Ultima_Movimento = New.Data
Where Estoque.Codigo_Filial = New.Codigo_Filial
And Estoque.Codigo_Produto = New.Codigo_Produto
And New.Tipo_Venda_Troca = ´V´;
End ^
Set Term ^ ;
Mas tambem tive o mesmo problema de lentidão. Isto é, o sistema comeca bem mais vai degradando a cada venda usando qualquer uma das instruções acima. Tenho um índice e retirando este indice a performance até melhora mais o probelma continua.
[b:f752414985]A minha pergunta é porque esta procedure ou trigger acima consome tanto recurso que o banco de dados fica lento e quando reinciado volta ao normal ? Usando o programa ibperformance verifiquei que com a procedure ou trigger acima o sistema começa a consumir memory buffer cache de forma abusurda. Como exemplo fazendo testes com mil vendas e com a procedure acima ele foi para 900.000.000 sem a procedure foi para 17.000.000. Usei diversas versões do firebird até a ultima 1.5. [/b:f752414985]
Assim embora resolvido não desejo que outros colabores passem pela mesma angustia que passei. Gostaria então de alguma opinão sobre o assunto.
Mais uma vez Grato
Marcos Roberto
Marcosrodias
Curtir tópico
+ 0
Responder
Posts
16/12/2003
Agnaldo
Prezados colabores
Há quase dois mesms venho neste forum solcitar apoio para resolver um problema no meu sistema. O probelma era o seguinte: o sistema iniciava vendendo bem mais com o volume de vendas comecava a ficar lento até não poder mais. Ai era necessário reinicar a máquina para resolver o problema. Vcs me dera várias informaçoes sobre como resolver mas não tive exito. Resolvi então executar cada operação no sistema e na gravaçã encontrei o trecho que estava dando problema. Veja abaixo
Update Estoque SET Estoque.Ultima_Venda = :sData,
Estoque.Ultima_Movimento = :sData
Where Estoque.Codigo_Filial = :iFilial
And Exists (Select Orcamento_Tmp.Codigo_Produto From Orcamento_Tmp
Where Usuario = :sUsuario
And Estoque.Codigo_Produto = Orcamento_Tmp.Codigo_Produto
And Tipo_Item = ´V´);
Tirei esta instrução e pronto, resolveu. Tentei esta trigger tambem:
Set Term ^;
Create Trigger Atu_Data_Movimento_Venda For Venda_Itens Before Insert As
Begin
Update Estoque SET Estoque.Ultima_Venda = New.Data,
Estoque.Ultima_Movimento = New.Data
Where Estoque.Codigo_Filial = New.Codigo_Filial
And Estoque.Codigo_Produto = New.Codigo_Produto
And New.Tipo_Venda_Troca = ´V´;
End ^
Set Term ^ ;
Mas tambem tive o mesmo problema de lentidão. Isto é, o sistema comeca bem mais vai degradando a cada venda usando qualquer uma das instruções acima. Tenho um índice e retirando este indice a performance até melhora mais o probelma continua.
[b:456979509b]A minha pergunta é porque esta procedure ou trigger acima consome tanto recurso que o banco de dados fica lento e quando reinciado volta ao normal ? Usando o programa ibperformance verifiquei que com a procedure ou trigger acima o sistema começa a consumir memory buffer cache de forma abusurda. Como exemplo fazendo testes com mil vendas e com a procedure acima ele foi para 900.000.000 sem a procedure foi para 17.000.000. Usei diversas versões do firebird até a ultima 1.5. [/b:456979509b]
Assim embora resolvido não desejo que outros colabores passem pela mesma angustia que passei. Gostaria então de alguma opinão sobre o assunto.
Mais uma vez Grato
Marcos Roberto
Olá Marcos.
Desenvolvo em Delphi com FB, e no inicio teive alguns problemas mas este ao qual vc se refere ainda não vi. Mas alguns detalhes:
Qual o SO vc está utilizando? se for o Win9x, este fica armazenando dados em seu ´cache´ e não limpa e fica armazenando... até travar. Para resolver este problema usei a seguinte tática:
Em meu cpmputador/propriedades/Desempenho/Sistema de arquivos:
Desativar novo compartilhamento de arquivo e bloqueio de
semântica.
Desativar ajustes de buffers síncronos.
Desativar o cache de gravação anterior para todas as unidades.
Isso faz com que o windows não utilize o cache para gravar dados.
Se for no Win2k/xp
Com o regedit
Localize a chave:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters.
Adicione os dois valores do tipo DWORD
CachedOpenLimit
EnableOplocks
os dois com o valor 0
Seus problemas podem diminuir consideravelmente.
Um abraço.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)