[firebase-br] RES: Lockwait como usar

rodrigo firebase em dominioinf.com.br
Qua Set 12 11:16:30 -03 2018


Bom dia Gladiston, Obrigado pela resposta,

Entao, o meu problema basicamente é nos pedidos, é onde recebo mais mensagens de deadlock.

O cenário envolve a venda de produtos onde n vendedores podem vender o mesmo produto para cada pedido.
Nos pedidos, o meu sistema não permite abrir o mesmo pedido em dois terminais diferente.

Então vejo que o problema pode ser no inserir itens, quando o sistema atualiza
O estoque na tabela produtos.

Embora eu abra e feche a inserção em questão de segundos, pois procuro não deixar a transação aberta.

Try

// insere dados dos itens

// atualizo a tabela estoque com uma informação importante para o sistema

Ibotransaction1.commit;

// aqui faço uma recontagem pela movimentação do estoque e atualizo a tabela estoque através de uma procedure
Que já faz um commit dentro da própria procedure

Except
ibotransaction1.rollback;
End;

Entao acredito que o deadlock esteja ocorrendo no momento em que atualiza o estoque, pq
Vao atualizar a mesma tabela ao mesmo tempo.

No ibotransaction estou usando Isolation Committed (Read Committed)
Autocommit = false
Server autocommit = false
Readonly = false
Lockwait = false  (estou fazendo testes com essa opção como true, porém também retornou deadlock)

Nesse caso, eu não gostaria que o sistema aprensentasse mensagens de erro, imagina o cliente fechando um pedido
Com o vendedor, e o sistema começasse a travar emitindo erros de deadlock...

Gostaria de saber sua opnião, de como posso melhorar isso.

Grato




 

Enviado do Email para Windows 10

De: Gladiston Santana
Enviado:quarta-feira, 12 de setembro de 2018 10:59
Para: FireBase
Assunto: Re: [firebase-br] Lockwait como usar

Olá colega.
Complementando ao que o Carlos disse, você precisa entender como você quer
que seu programa funcione e então acionar o modelo de transação mais
adequado.
Por exemplo, se eu estou vendendo passagens de ônibus e abro um cumpom de
venda e tô preenchendo uma venda da poltrona 7, seria inconcebivel outro
vendedor que é mais rapido na digitação, selecionar a poltrona 7 e vende-la
primeiro que eu. Nesse cenário seria preferivel que o segundo vendedor no
simples gesto de tentar vendar a poltrona 7 tomasse um belo de um dead lock
antes de abrir o formulário de venda. Mas um cenário diferente como o de
atualização cadastral, isso não seria importante, quem preenchesse por
ultimo é o que ficaria valendo. Esses tipos de cenários são chamados de
"tipo de isolamento" e está presente no componente de transação.
Você tem um componente de transação para colocar no seu formulario, e
formulários diferentes podem ter cenários ou tipo de isolamento diferentes,
mas se um programa por inteiro usará o mesmo cenário, você pode suprimir
este tipo de componente e assinalar o tipo de isolamento/transação direto
no componente de conexão.
Depois de entender o uso desse tipo de componente, você não terá mais
problemas, quero dizer, você não verá um deadlock como um problema, mas um
requisito necessário para usar aquela parte do programa.
Um problema de iniciantes com o IBO é que ele tem ajustes automaticos
transacionais, você não informa o tipo de isolamento e tantos outros
parametros e a inteligência do Jason assumirá uma série de coisas para
você, mas não é bom que os isolamentos sejam determinados por terceiros,
você deve defini-los.

G.

Em 12 de setembro de 2018 09:12, rodrigo <firebase em dominioinf.com.br>
escreveu:

> Bom dia,
>
> Estou com vários problemas de deadlock em meus sistemas, e estou tentando
> fazer algo para diminuir esse problema.
>
> Já segui uma dica para colocar um transaction para ler e um para gravar,
> mas o problema aumentou mais ainda.
>
> Entao estou ativando o modo LockWait para true e lockwaittimeout para 5000.
>
> Essas configurações estão corretas? Será que isso vai me ajudar ou poderá
> me ocasionar mais problemas?
>
> Utilizo IBO e os componentes da palheta IBODataset
>
> Grato pelas opiniões.
>
>
>
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://www.firebase.com.br/pesquisa_lista.html



---
Este email foi escaneado pelo Avast antivírus.
https://www.avast.com/antivirus



Mais detalhes sobre a lista de discussão lista