Qual é a melhor maneira de evitar DeadLock

22/03/2006

0

Qual é a melhor forma e configurações etc, para evitar deadlock Delphi 7 com IBX e Firebird 1.5 mais de 5 estações clientes ao mesmo tempo as vezes com duas ligadas já da este erro.
Error Message:
----------------------------------------
Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
lock conflict on no wait transaction.
deadlock.
update conflicts with concurrent update.


Mkoch

Mkoch

Responder

Posts

22/03/2006

Mkoch

Alguém ai utiliza transações???


Responder

22/03/2006

Titanius

Olá, eu uso como ReadCommited, e por enquanto não tive esse problema.. mais de 45 maquinas quase ao mesmo tempo e nada...


[]s


Responder

22/03/2006

Mkoch

É estranho, tb uso ReadCommited.


Responder

22/03/2006

Vinicius2k

Colega,

O único segredo para não ter [i:ea00af9929]DeadLocks[/i:ea00af9929] é utilizar sempre transações curtas.
Penso que você precisaria revisar o projeto quanto às transações para não mais ter este problema.
Se suas transações já forem curtas e, pelo que pude observar, você está utilizando as transações em modo ´nowait´. *Talvez*, dependendo da forma como você está manipulando os dados, o modo ´wait´ fosse mais indicado. Se a edição de um mesmo registro por diversos usuários for constante, uma espera de alguns décimos de segundo poderia fazer o problema desaparecer.


Responder

23/03/2006

Titanius

Aproveitando a deixa... Vinicius, qual a diferença do NoWait pro Wait?


[]s


Responder

23/03/2006

Vinicius2k

Com ´nowait´, se o registro estiver travado, imediatamente é disparada uma exceção na aplicação.
Com ´wait´, a aplicação aguarda até que o registro seja destravado para executar a operação, sem gerar exceção.


Responder

23/03/2006

Titanius

Esse Wait, tem algum delay? tipo, ele fica la a vida toda esperando ou depois de um tempo ele trava.

[]s


Responder

23/03/2006

Vinicius2k

É ´eterno´... não há como configurar um tempo de espera.


Responder

23/03/2006

Martins

Bom saber disso, informação nunca é d+, :D !!!!


Responder

24/03/2006

Etate

Olá !

O deadlock é causado quando duas transações concorrentes ficam uma aguardando a outra acabar e vice-versa. Isto ocorre devido a sequencia de operações nas tabelas serem invertidas exemplo, a Trans1 faz update na Tab1 seguido da Tab2 e a Trans2 na Tab2 seguida da Tab1, com isso uma fica esperando a outra.
Uma forma de solucionar o problema é identificar quais as operações que entraram no deadlock e analizar o codigo para que eles tenham a mesma sequencia de operação.

Isso tambem pode ocorrer em uma única tabela, nos casos em que as transações alteram registros da tabela de forma invertida.

Até mais,
Everton


Responder

24/03/2006

Thomaz_prg

Mas Vinicius, me esclarece uma dúvida....
Se eu definir minha transação no IBX com wait e setar na propriedade IDleTimer um valor por exemplo, 2000, após o tempo setado em IdleTimer, a exceção é retornada a aplicação estou certo??

Ou seja, seria um tempo máximo para tentativas, mesmo usando Wait.??


Responder

24/03/2006

Vinicius2k

thomaz_prg,

Estou meio ´enferrujado´ no IBX, mas, que eu me recorde, a propriedade IdleTimer de TIBTransaction, determina quanto tempo aguardar, porém não gera exceção.
Quando atingido o tempo limite, a ação determinada na propriedade DefaultAction é executada.
Funciona como um indicador de ociosidade, e não se aplica a uma transação ´commitada´ que está aguardando e sim a uma transação aberta que está pendente de commit ou rollback.


Responder

25/03/2006

Titanius

thomaz_prg, Estou meio ´enferrujado´ no IBX, mas, que eu me recorde, a propriedade IdleTimer de TIBTransaction, determina quanto tempo aguardar, porém não gera exceção. Quando atingido o tempo limite, a ação determinada na propriedade DefaultAction é executada. Funciona como um indicador de ociosidade, e não se aplica a uma transação ´commitada´ que está aguardando e sim a uma transação aberta que está pendente de commit ou rollback.


Opa.. aproveitando... o que você usa vinicius para firebird?


[]s


Responder

25/03/2006

Vinicius2k

No momento, dbExpress + driver para IB da Borland e testando/estudando a aquisição do [url=http://www.devrace.com/en/fibplus/]FIB+[/url] ou driver da [url=http://www.upscene.com]Upscene[/url] para FB.

Mas tenho muitos projetos já realizados com IBX e devo utilizá-lo em um novo projeto com o FB Embeded (o dbExpress não se comporta de forma estável com o FB Embeded).


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar