[firebase-br] Duvida sobre Commit em Rede

Rodrigo firebase em dominioinf.com.br
Seg Nov 17 10:07:06 -03 2014


Bom dia Gladiston,

O problema de velocidade é so no commit, todo o restante do processo é 
rapido.

Se tiro o commit voa, ele so perde tempo quando executo commits,

por exemplo no servidor.

A cada novo registro de item na nfe eu insiro um commit no final, para que a 
cada
novo item fique gravado definitivamente no bd. Ele perde 4 segundos a cada 
registro
para dar o commit.
Em rede fica pior 8 segundos.

Entao se inserirmos 10 itens 80 segundos é só para commit.

E isso acontece em qualquer commit em qualquer parte do sistema.

No ibo tenho medo de atualizar porque tentei atualizar para a versão 5 do 
ibo e foi um problema
para instalar, e depois de muito trabalho e instalado, tive muitos, muitos 
problemas na aplicação.

Erros que eu não sei nem de onde vinham, então voltei para o IBO 4 e 
estabilizou novamente.

Grato




-----Mensagem Original----- 
From: Gladiston Santana
Sent: Monday, November 17, 2014 9:46 AM
To: FireBase
Subject: Re: [firebase-br] Duvida sobre Commit em Rede

Bem, então você identificou um processo onde o commit/insert é lento, isto
é, criação da NFe.

Sobre os indices, digo o seguinte, crie apenas para operações que são
realmente importantes, que sem elas a localização de objetos ficará
comprometida e o sistema lento.
Não crie indices pensando em relatórios ou pesquisas em grids, pelo menos
não sem certificar que o uso de IB_Grids já tenham essa função em RAM.
Se terá de lidar com muitos indices aconselho a aumentar o tamanho de
página para 16k. O consumo de disco e RAM aumentará, mas faz parte do
processo para obter mais velocidade.

No caso de NFe, creio que você tenha um cenário de
produtos/serviços,cliente, etc... numa unica tela, mestre/detalhe, como a
maioria de nós faz.
O adequado neste cenário, na minha opinião - é bom deixar isso claro -, é
usar clientdataset e fazer tudo o que precisa em RAM e não diretamente no
DB.
Voce usa o DB para consultas, mas os dados da NFe que está construindo
residem em CDS.
Tendo a confirmação, então submete a transferencia do que está em CDS para
o banco, daí duas alternativas:
- IB_Script : Voce cria um script com os inserts e no final commit work.
IB_Script é mais rápido que o IBOQuery porque não tem que se preocupar com
os dataawares como TDatasets (TDBEdit e afins) que estejam linkados. Até o
IB_Query é melhor que o IBOQuery por essa mesma razão.
- Procedures : Você apenas dispara uma stored procedure com parametros
adequados e ela faz o resto internamente no banco, o grosso será processado
no lado server, o lado client é apenas um frontend.
Para minhas notas eu uso procedures porque todo o calculo e engenhosidade
tá alí, inclusive o calculo, portanto, o camarada confirma, dispara a SP e
só então obtem os resultados da NF e/ou pedido que se abre em seguida com
os calculos prontos.

Uma observação, CDS é no Delphi7 é meio bugado, dá vazamento de memória
então queira por gentileza criar em memória e destruí-lo e evitar esses
bugs.

Também observe a versão do seu IBO, como disse antes, existem bugs.

Um abraço e boa sorte.




Em 17 de novembro de 2014 08:32, Rodrigo <firebase em dominioinf.com.br>
escreveu:

> Bom dia Gladiston, Obrigado pela resposta,
>
> Sim, ja fiz backup restore.
> Sobre os indices, pode até ser, mas tenho usado conforme tenho aprendido
> aqui mesmo na lista.
> O que vc poderia indicar, excluir todos os indices?
>
> Sobre o insert, eu uso o componente IBODataset e o IBOTransaction e
> IBOQuery para todas as tabelas.
> E os updates, inserts e delete são preenchidos automaticamente pelo
> IBOQuery no UpdateSQL usando
> o botão "Generate for table", mas acredito que não seja por isso. Tenho
> tabelas que contem bastante campos
> como a tabela onde guarda as informações da Nota Fiscal. Pode ser isso?
>
> Sobre a lentidão no servidor não ser mencionada no inicio é porque so
> descobri isso depois do primeiro post,
> as primeira nfes lançadas ficam rapidas e vão ficando lentas a partir da
> segunda, terceira e assim por diante.
>
> Ja fiz varias verificações no meu sistema procurando por objetos criados e
> não destruidos ou Queries muito lentas,
> mas até o momento não consegui achar nada muito fora do normal ou que
> possa ser melhorado.
>
> O que fiz até agora e tem dado um pouco mais resultado é eliminar todos os
> Commits possiveis, e commitar uma
> unica vez quando vou gerar a nfe, então fica lento so na ultima parte,
> depois de lançar o cliente, produtos, formas de pagto, o problema com isso
> é que
> sempre fico com medo de se der uma queda o cliente perder essas
> informações e ter que começa-los do zero novamente.
>
> Grato pela ajuda,
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: 
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa 


---
Este email está limpo de vírus e malwares porque a proteção do avast! Antivírus está ativa.
http://www.avast.com





Mais detalhes sobre a lista de discussão lista