Fabiano vs DeadLock Paralelism
Galera, espero que este post sirva como ajuda para quem vai para o google a procura de uma resposta…
Pergunta, pode ocorrer um erro de deadlock em um select ?
Resposta: Sim. Um deadklock ocorre quando uma sessão esta esperando para acessar um determinado recurso que esta sendo utilizado por outra sessão. Estes recursos podem ser locks, paralelismo, sessões em espera, ou uma combinação destes itens.
Meu problema foi justamente este de paralelismo, eu tenho uma consulta que estava utilizando paralelismo e as vezes ela apresentava o seguinte erro:
Transaction (Process ID 55) was deadlocked on thread | communication buffer resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
Repare no item em negrito e veja que o recurso que esta sendo acessado é esse tal de “communication buffer” que é o que? Paralelismo.
Resumo da ópera, como não sou DBA do ambiente e não posso mexer e nem ver a cor do servidor onde o SQL está instalado, tive que apelar para um OPTION(MAXPDOP 1) na minha proc. Desta forma evito o paralelismo e por consequencia o deadlock.
Abraços
Oqueeeeeeeeee..meu amigo Fabiano usando MaxDop uhuuuuuuu !!!! É isso ai velhina..Abraços !!!
Que merda hein? Qual SQL Server?Odeio fazer esses "remendos". Você chegou a identificar os recursos exatos envolvidos no deadlock? As trace flags de monitoração dos deadlocks informam dados sobre os consumers, producers e controller do paralelismo. Fiquei curioso…
Então Luti, Eu tbm não gosto destes remendos… mas como eu disse,, eu não posso nem chegar perto do servidor de banco de dados, pra você ter uma idéia se eu plugar um cabo de rede no meu notebook uma luz vermelha começa a piscar na minha cabeça uma sirene toca e a SWAT entra na sala quebrando os vidros… rsrs,… Mas sei que é um SQL 2005 Enterprise instalado em um ambiente Virtualizado, e é um servidor Compartilhado, ou seja, a cocorrência por CPU deve ser bem grande… 😦
Fabiano e Luciano…..Nesse caso seria que um indice não resolveria?Pois eu vi no meu ambiente uma consulta que executava parelelismo e no caso a própria tarefa se bloqueava…e o bloqueio era por página…….será que as vezes criando um indice resolveria?Estou supondo……..sobre o maxdop,eu não acho que seja um remendo…..eu usei ele em meu ambiente ja…….mas eu sabia o porque de estar usando…rsrsrsrs….mas no caso o fabiano não pode nem tocar no servidor…..ai vira um remendo…rsrsrrsLaerte,quem diria o Fabiano usando o maxdop…kkkkkkk….Abraços a todos!!!!!