[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