[firebase-br] Sobre o Erro Lock Conflit on nowaittranssactiondeadlock
Josauro S.J.
josauro em casasoft.inf.br
Ter Nov 30 18:11:17 -03 2004
Não vejo problema em usar atualização on-line, talvez seja um problema o desenvolvimento das tabelas em criar uma com o estoque de total de produtos, acho que se normatizado voce poderia abolir essa tabela uma vez que voce não precisa saber o saldo exato a cada venda (Uma vez qeu os produtos são baixados somente quando passados no caixa.) e somente em determinado procedimento para efeturar novas compras de produtos etc...
Josauro S.J.
Diretor
josauro em casasoft.inf.br
----- Original Message -----
From: Eduardo Jedliczka
To: Marcilio Soares ; FireBase
Sent: Tuesday, November 30, 2004 6:03 PM
Subject: Re: [firebase-br] Sobre o Erro Lock Conflit on nowaittranssactiondeadlock
O Problema de deadlock é bem simples:
Imagine que duas pessoas resolvam fazer compras num supermercado!
A primeira comprou vários produtos e se dirigiu ao caixa número 1;
A segunda comprou vários produtos e se dirigiu ao caixa número 2;
Para garantir integridade está usando uma transação do tipo consistency;
O primeiro caixa está passando os produtos e dentre eles passa uma caixa de
leite (que terá o estoque atualizado)
O segundo caixa está passando os produtos e dentre eles passa um pacote de
iogurte (que terá o estoque atualizado)
Os produtos continuam sendo passados em ambos os caixas, mas quando menos se
espera, é necessário passar um pacote de iogurte no primeiro caixa, então o
banco espera que o registro seja liberado para poder atualizar o estoque.
Por azar do destino, no segundo caixa também foi vendido uma caixa de leite,
então o banco fica esperando que o registro do leite seja liberado, porém,
este registro nunca será liberado...
Resultado: DeadLock.
Para Resolver, ou faz um processo de venda em duas fases (local via tabela
temporária e realiza uma atualização de cada vez) ou com estoque off-line,
sincronizando-o no final do dia.
Só um detalhe para os puritanos, onde está escrito registro, leia-se
páginas, já que o FB trabalha com lock por página.
[s]
=====================
Eduardo Jedliczka
GeraSoft Informática
Apucarana - PR
=====================
----- Original Message -----
From: "Marcilio Soares" <marcilio.soares em brfree.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Tuesday, November 30, 2004 6:45 PM
Subject: Re: [firebase-br] Sobre o Erro Lock Conflit on no
waittranssactiondeadlock
> 1º A maquina que lockar o registro numa edicao primeiro
> 2º Existe uma proprieade no banco se nao me engano(Pessoal corrige se
tiver
> errad) chamada Waitlock que define o tempo de espera para erro de lock ou
> coisa assim!
> Agora eu pergunto... nowait e para que ?
>
> ----- Original Message -----
> From: "Luciano" <panorama_luciano em yahoo.com.br>
> To: <lista-delphi em yahoogrupos.com.br>; "FireBird" <lista em firebase.com.br>
> Sent: Tuesday, November 30, 2004 2:14 PM
> Subject: [firebase-br] Sobre o Erro Lock Conflit on no wait
> transsactiondeadlock
>
>
> Galera:
>
> Digamos que duas maquinas ( A e B) estejam alterando o mesmo registro
> selecionado ao mesmo tempo.
> 1º Existe alguma forma de definir qual máquina irá alterar os dados
> primeiro?
> 2º Quando a máquina A estiver alterando os dados, existe alguma forma de
> colocar a máquina B em espera até que o registro seja liberado pela
máquina
> A?
>
> Nas configurações da transação, estou utilizando read_committed,
> rec_version, nowait.
> Para cada tabela utilizo uma transação.
>
> Grato pela atenção de todos.
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Mais detalhes sobre a lista de discussão lista