O que significa o termo CXPACKET?

-1

O Google não parece ter uma definição do termo.

    
por blueberryfields 08.10.2009 / 23:34

4 respostas

1

De Windows IT Pro :

A. You will only get this with SQL 7 because it only happens with parallel queries. It means that one thread of the query is waiting for a message packet from another, and the one it is waiting on is either blocked by a traditional cause or has hit some sort of parallelism bug.

CXPacket means it is waiting on a data packet - i.e. the results of an internal query is being passed. Exchange means that it is waiting on a control packet - i.e. waiting for a child/sibling process to tell you that it is finished.

If the query doesn't complete then make sure SP1 is applied as there are several parallel query fixes in SP1. If it still doesn't fix it then you have run into an unfixed bug and will need to contact Microsoft PSS and raise a bug report. You should be able to work-around the problem by adding MAXDOP(1) to the query which will prevent the query being parallelised.

Este tópico na Equipe SQL também é útil.

    
por 08.10.2009 / 23:39
1

Possivelmente, o CX é uma forma abreviada de "troca", mas, como parece estar relacionado ao paralelismo, eu acho que significava "contexto" (como em "alternância de contexto").

Para adicionar à resposta de heavyd: CXPACKET é um tipo de espera "que o SQL Server usa para coordenar o paralelismo - e geralmente você pode ignorá-lo" (de este post ). Ele está definido em sys.dm_os_wait_stats (MSDN, veja a tabela de tipos de espera ), mas não vejo nada indicando uma origem específica para o termo. Essa tabela fornece esta descrição:

Occurs when trying to synchronize the query processor exchange iterator. You may consider lowering the degree of parallelism if contention on this wait type becomes a problem.

    
por 08.10.2009 / 23:57
1

A forma completa do CXPACKET é um pacote de troca de classe e acontece que uma consulta está sendo executada no paralelismo.

    
por 27.04.2015 / 10:58
1

CXPACKET significa Classe Exchange Packet. Você verá esse tipo de esperas em SQL Servers em que o MAXDOP está configurado para qualquer coisa, exceto 1. MAXDOP é o grau máximo de paralelismo. Zero é o padrão de MAXDOP pronto para uso, e isso significa que as consultas tentarão usar todos os núcleos disponíveis. Não deixe o MAXDOP definido como ZERO, e não o defina como um (apenas um núcleo é pulsado até a morte), a menos que você tenha certeza de nunca querer usar o paralelismo. É uma prática comum definir o MAXDOP para [# de seus núcleos - 4]. Deve reservar alguns núcleos para o próprio servidor. Se você tiver hyperthreading, isso complica a configuração do MAXDOP, consulte o artigo da MSFT:

link

O SQL Server 2012 possui um Best Practice Analyzer (SQL Server 2012 BPA), para ajudar a determinar as configurações do MAXDOP.

Assista ao excelente vídeo de Brent Ozar no CXPACKET:

    
por 25.02.2016 / 21:52