[firebase-br] Voltou a cair (URGENTE)

Eduardo Jedliczka (TeamFB) jedyfb em gmail.com
Seg Set 25 13:26:11 -03 2006


1) Não sou um usuário do DBX, por isto provavelmente eu não serei a melhor 
pessoa a lhe responder sobre isto, mas segundo me consta, é necessário, além 
do ApplyUpdates(-1), fechar a query. (não sei se há um componente expecífico 
para transações).

2) Se você usa triggers, e SPs, pode trabalhar 100% num contexto de 
auto-commit. sei que o DBX não suporta operações auto-commit, mas seria bom 
você possuir uma forma de "liberar" a transação caso um usuário fique muito 
tempo sem usar, assim, evita-se transações longas quando uma pessoa começa a 
alterar um cliente ou pedido, e sai para almoçar.

3) Sim, é recomendado que você use o FB Classic. Não é necessário mudar nada 
no sistema, exceto se alguém utilizar conexão local com o banco (precisa 
informar o IP). Simplesmente remova o SuperServer (guarde o arquivo de 
usuários, se você criou algum), e instale o classic. Provavelmente você 
perceberá que o tempo de inicialização do seu sistema irá subir (o classic 
aloca recursos a cada nova conexão), mas a utilização dos dois 
núcleos/processadores será melhor distribuída.

4) as estatísticas são texto. poste-as no corpo da mensagem mesmo. Mas poste 
apenas as informações relevantes (oldest transaction, etc)...

======================
Eduardo Jedliczka
Membro do TeamFB - FireBase
Apucarana - PR
======================
"Posso não concordar com nada do que dizes.
Mas defenderei até a morte o seu direito de dizê-lo"
(Voltaire 1694-1778)

----- Original Message ----- 
From: "Suporte Sinapse Informática" <suporte em sinapseinformatica.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Monday, September 25, 2006 1:06 PM
Subject: Re: [firebase-br] Voltou a cair (URGENTE)


  Olá Eduardo,

  Obrigado pelas dicas que você me deu. Só queria tirar algumas dúvidas 
sobre suas dicas.

  Primeiramente eu queria te informar que estou usando sim o DbExpress e com 
DELPHI 6. Atualmente estou usando com o famoso trio de componentes SQLQUERY 
+ DATASETPROVIDER + CLIENTDATASET.

  1) Como faço HARD-COMMIT no fechamento da tabela. Na maioria dos caso em 
que uso a transação é quando tenho que você alterações (inclusões, 
alteração, exclusões) em mais de uma tabela no mesmo laço.

  2) Quanto a esse caso estou fazendo direitinho, aliás é padrão daqui da 
empresa trabalhar dessa forma com relação as transações. Agora eu tenho 
triggers que disparam atualizações em outras tabelas, exemplo quando um 
usuário alterar o código do cliente no cadastro de clientes, existe uma 
trigger que executa uma procedure que faz a alteração do código nas tabela 
dependente, justamente para manter a integridade referencial.

  3) Estou usando Windows 2003 Server com o Firebird 1.5 Superserver no 
computador Xeon 2.8 Ghz com 4 GB de Memória. Alguns colegas da lista 
sugeriram o uso do Classic server pois segundo eles funcionaria melhor com 
placa de 2 processadores. Só gostaria de saber se mudará alguma coisa e 
minha aplicação. Como posso fazer essa mudança?

  O banco de dados está com aproximadamente com 2.5gb com 90 usuários 
acessando simultaneamente.

  Eu gostaria de mandar as estatísticas do banco de dados que foi tirada 
hoje pela para vocês verificarem, mas eu não sei se posso enviar mensagens 
anexadas para lista. Até gostaria de saber com o administradores da lista se 
é possível, caso seja, eu irei enviá-los.

  Agradeço desde já pela sua ajuda,

  CARLOS HENRIQUE MEIRELES
  DESENVOLVIMENTO DE SISTEMAS


  OK... você tem um modelo transacional inadequado para o seu sistema.

  Antes de mais nada é saber em qual linguagem e componente de acesso você
  está usando.

  Reparei que os piores casos de controle transacional estão relacionados à
  DBEXPRESS (por culpa do cache dos dados as pessoas não commitam as
  transações),

  Mas uma sugestão é sempre ter duas transações:

  1ª) de curta duração auto-commit (que deve ser commitada a cada operação 
no
  banco) usada para operações simples como alterar um cliente, excluir um
  registro, inserir um novo produto, em que não há necessidade de um 
rollback.
  Se possível procure dar um hard-commit logo após fechar cada tela do
  sistema.

  2ª) transação completa... usada para operações de emissão de nota fiscal
  (criação da nota, detalhes da nota, baixa de estoque, geração de
  duplicatas) que devem ser iniadas no momento em que os primeiros dados 
forem
  enviados ao banco e finalizada (via commit ou rollback) assim que a 
operação
  esteja completa.

  Só mais uma informação, foi você que disse que usa seu software num XEON
  DUAL com LINUX ? em caso positivo, verifique qual versão do FB está sendo
  executada. Uma coisa que pode melhorar é desligar o sweep (via gfix) e
  agendá-lo via crontab para momentos de baixo pico de uso. (logo pela 
manhã,
  início do horário de almoço,  horário do café da tarde, logo após ao 
término
  do expediente.)

  ======================
  Eduardo Jedliczka
  Membro do TeamFB - FireBase
  Apucarana - PR
  ======================
  "Posso não concordar com nada do que dizes.
  Mas defenderei até a morte o seu direito de dizê-lo"
  (Voltaire 1694-1778)
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa 





Mais detalhes sobre a lista de discussão lista