THREAD E TRANSA?ÃO NO BANCO DE DADOS
Pessoal
Fiz uma aplicação no vb.net para rodar como serviço e com uma thread da seguinte forma:
Private accessLock As New Object
SyncLock accessLock
[ô] grava no banco de dados com transação
gravarBD
End SyncLock
De vez enquando dá o erro de deadlock na hora de grava no banco de dados, será que este erro é por causa do synclock ou por estar usando transação?
Fiz uma aplicação no vb.net para rodar como serviço e com uma thread da seguinte forma:
Private accessLock As New Object
SyncLock accessLock
[ô] grava no banco de dados com transação
gravarBD
End SyncLock
De vez enquando dá o erro de deadlock na hora de grava no banco de dados, será que este erro é por causa do synclock ou por estar usando transação?
vamos entender, o q seria erro de deadlock?
Um deadlock acontece quando duas ou mais tarefas bloqueiam uma à outra permanentemente, sendo que cada uma tem o bloqueio de um recurso, que a outra tarefa está tentando bloquear. Por exemplo:
•A transação A adquire um bloqueio compartilhado da linha 1.
•A transação B adquire um bloqueio compartilhado da linha 2.
•A transação A agora solicita um bloqueio exclusivo na linha 2 e é bloqueado até que a transação B termine e libere o bloqueio compartilhado que tem na linha 2.
•A transação B agora solicita um bloqueio exclusivo na linha 1 e é bloqueado até que a transação A termine e libere o bloqueio compartilhado que tem na linha 1.
A transação A não pode terminar até que a transação B termine, mas a transação B está bloqueada pela transação A. Essa condição é também chamada de dependência cÃclica: a transação A tem uma dependência da transação B, e a transação B fecha o cÃrculo tendo uma dependência da transação A.
então depende das operações q vc esta tentando, vc já sabe o q acontece e pq...
Um deadlock acontece quando duas ou mais tarefas bloqueiam uma à outra permanentemente, sendo que cada uma tem o bloqueio de um recurso, que a outra tarefa está tentando bloquear. Por exemplo:
•A transação A adquire um bloqueio compartilhado da linha 1.
•A transação B adquire um bloqueio compartilhado da linha 2.
•A transação A agora solicita um bloqueio exclusivo na linha 2 e é bloqueado até que a transação B termine e libere o bloqueio compartilhado que tem na linha 2.
•A transação B agora solicita um bloqueio exclusivo na linha 1 e é bloqueado até que a transação A termine e libere o bloqueio compartilhado que tem na linha 1.
A transação A não pode terminar até que a transação B termine, mas a transação B está bloqueada pela transação A. Essa condição é também chamada de dependência cÃclica: a transação A tem uma dependência da transação B, e a transação B fecha o cÃrculo tendo uma dependência da transação A.
então depende das operações q vc esta tentando, vc já sabe o q acontece e pq...
Tópico encerrado , respostas não são mais permitidas