Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

O que bloqueia | recursos de buffer de comunicação significam?


Eu interpretaria a mensagem como um impasse em alguma combinação de recursos de bloqueio ou recursos de buffer de comunicação. "Recursos de bloqueio" são bloqueios de objetos comuns e "Recursos de buffer de comunicação" são eventos de troca usados ​​para combinar resultados de consultas paralelas. Eles estão descritos em https://blogs.msdn.microsoft.com/bartd/2008/09/24/todays-annoyingly-unwieldy-term-intra-query-parallel-thread-deadlocks/ onde o parágrafo relevante é:

O gráfico de deadlock para um desses que eu vi incluía um conjunto de processos com apenas um SPID e um gráfico de objectlocks e exchangeEvents. Acho que a mensagem "A transação (ID do processo 55) foi bloqueada no bloqueio | recursos do buffer de comunicação com outro processo e foi escolhida como vítima do bloqueio. Execute novamente a transação" aparece em vez de "Paralelismo intra-consulta causou um impasse no comando do servidor (ID do processo #51). Execute novamente a consulta sem paralelismo intra-consulta usando a opção de dica de consulta (maxdop 1)" por causa da combinação de objectlocks e exchangeevents, ou então a mensagem foi alterada no SQL Server desde que o artigo foi escrito.