Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Cosa blocca | significa risorse del buffer di comunicazione?

Interpreterei il messaggio come un deadlock su una combinazione di risorse di blocco o risorse del buffer di comunicazione. Le "risorse di blocco" sono normali blocchi di oggetti e le "risorse del buffer di comunicazione" sono exchangeEvents utilizzati per combinare i risultati di query parallele. Questi sono descritti ulteriormente in https://blogs.msdn.microsoft.com/bartd/2008/09/24/todays-annoyingly-unwieldy-term-intra-query-parallel-thread-deadlocks/ dove il relativo paragrafo è:

Il grafico di deadlock per uno di questi che ho visto includeva un insieme di processi con un solo SPID e un grafico di objectlock e exchangeEvents. Immagino che il messaggio "La transazione (ID processo 55) fosse bloccata sul blocco | risorse del buffer di comunicazione con un altro processo ed è stata scelta come vittima del deadlock. Riesegui la transazione" appare invece di "Il parallelismo all'interno della query ha causato il deadlock del comando del server (ID processo n. 51). Eseguire nuovamente la query senza il parallelismo all'interno della query utilizzando l'opzione del suggerimento per la query (maxdop 1)" a causa della combinazione di blocchi di oggetti ed eventi di scambio, oppure il messaggio è stato modificato in SQL Server da quando è stato scritto l'articolo.