deadlocks - entendimento - Fórum DevMedia
deadlocks - entendimento
acabei de fazer uma leitura sobre deadlock, achei meio confusa(talvez devesse ler mais vezes), mas alguem poderia me dar um exemplo pratico, vivido realmente, o que pode causar esses deadlocks.
Basicamente, eh como se eu e vc estivéssemos querendo usar recurso bloqueados um pelo outro, e como para se usar um recurso ele precisa ser liberado, então ficamos esperando um pelo outro a liberação do recurso em uso um do outro, acho que ficou meio complicado... rsrsr
eu tenho um recurso bloqueado que estou utilizando e vc tem um recurso bloqueado que esta usando, então eu preciso do recurso que vc esta bloqueando e vc usar o que eu estou bloqueando, neste ponto ficamos um aguardando pelo outro, neste caso dá-se o deadlock.
de uma olhada neste conteúdo que fala sobre deadlock e tratamento dele, acho que vai ajudar no esclarecimento.
http://msdn.microsoft.com/pt-br/library/ms177433(v=sql.105).aspx
certo, mas o que pode causar isso? memoria insuficiente? muitas acesso em um mesmo conjunto de dados...?
então, a principio vc tem deadlock para cada tipo de situação, tem o deadlock com relação a memoria, acesso a arquivos etc.
no caso do banco de dados se não em engano o SQL vai trabalhar em cima do controle de concorrência para evitar esse tipo de acontecimento, mas eh praticamente impossível prever e/ou evitar o acontecimento de um deadlock.
Acredito que em alguns casos, memoria e outra situação com relação a parte física ou de configurações podem ajudar a haver maior incidência ou não.
mas o "assunto" deadlock eh muito vasto e de grande complexidade a relação entendimento e ele eh pouco tratado, ou pouco discutido mais a fundo no caso, eu ate hoje não encontrei ninguém para explicar mais efetivamente o que eh um deadlock, praticamente ouvia sempre a mesma coisa, "são dois acessos simultâneos ao um mesmo registro bloqueado, a grosso modo eh isso.", então fica um pouco difícil, honestamente o meu entendimento eh limitadíssimo neste assunto.
nesse caso, por exemplo, podemos ter perda de dados ou isso deve ser informado pelo sistema ou pelo proprio para o usuario?
Não entendi muito bem o que disse...
mas no caso da perca de dados, pode acontecer, visto que uma das requisições sera finalizada, ou no caso foi escolhida para o deadlock, para este a transaction acabou e todo o processo que era feito ate aquele momento eh descartado e volta para a o estado original, e a outra sessão continuara e terminara o seu processo.
não sei se podemos chamar exatamente de perca de dados, mas todo os dados que estavam sendo informados naquele lote de informações que estariam em cache, digamos assim, sera descartado.