[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