Deadlock - me digam se eu estou certo
Oi, pessoal, estou desenvolvendo um sistema de estacionamento rotativo em delphi 6 com Interbase 6, usando a estratégia de 3 camadas. Meu problema é o seguinte :
Quando há vários usuários usando o sistema ao mesmo tempo, num dado momento, todas as estações travam, sem mostrar nenhuma mensagem de erro, enquanto que o servidor Midas(Data Snap) prossegue como se nada tivesse acontecido.
A princípio, achei que o problema fosse com minhas configurações de thread e instanciação do Midas, tanto é que troquei o modelo Apartment pelo Single e tudo funcionou normalmente. Só que o modelo Single não é o mais indicado para o tipo de sistema em questão.
Foi quando, lendo sobre Banco de Dados, me deparei com os Deadlocks e percebi que a situação se encaixa.
Por favor, me digam se as minhas conclusões estão certas. Se estiverem, me digam como agir.
Obrigado.
Quando há vários usuários usando o sistema ao mesmo tempo, num dado momento, todas as estações travam, sem mostrar nenhuma mensagem de erro, enquanto que o servidor Midas(Data Snap) prossegue como se nada tivesse acontecido.
A princípio, achei que o problema fosse com minhas configurações de thread e instanciação do Midas, tanto é que troquei o modelo Apartment pelo Single e tudo funcionou normalmente. Só que o modelo Single não é o mais indicado para o tipo de sistema em questão.
Foi quando, lendo sobre Banco de Dados, me deparei com os Deadlocks e percebi que a situação se encaixa.
Por favor, me digam se as minhas conclusões estão certas. Se estiverem, me digam como agir.
Obrigado.
Anonymous
Curtidas 0
Respostas
Anonymous
26/02/2003
Existem vários fatores para este acontecimento; mas pela descrição do seu problema..provavelemente não é erro de DeadLock pois o Interbase Não aceita transações concorrentes...não avendo transações concorrentes não tem como uma transação travar um registro e outra transação tentar usá-lo..
O que pode ter ocorrido é que todas as máquinas ´ao mesmo tempo´ fizeram uma solicitação (em transação) e o interbase colocou as solicitações em fila e executou uma a uma (sequencialmente)...
E dependendo do tamanho da transação isto pode ser rápido, ou um pouco demorado....
Espero ter ajudado..
O que pode ter ocorrido é que todas as máquinas ´ao mesmo tempo´ fizeram uma solicitação (em transação) e o interbase colocou as solicitações em fila e executou uma a uma (sequencialmente)...
E dependendo do tamanho da transação isto pode ser rápido, ou um pouco demorado....
Espero ter ajudado..
GOSTEI 0