Что означает термин CXPACKET?

1284
blueberryfields

У Google, похоже, нет определения этого термина.

-1

4 ответа на вопрос

1
heavyd

Из Windows IT Pro :

О. Вы получите это только с SQL 7, потому что это происходит только с параллельными запросами. Это означает, что один поток запроса ожидает пакет сообщения от другого, а тот, на котором он ожидает, либо заблокирован по традиционной причине, либо столкнулся с некоторой ошибкой параллелизма.

CXPacket означает, что он ожидает пакет данных - т.е. результаты внутреннего запроса передаются. Обмен означает, что он ожидает контрольный пакет, т. Е. Ожидает, пока процесс дочернего процесса / брата сообщит вам, что он завершен.

Если запрос не завершен, убедитесь, что SP1 применен, поскольку в SP1 есть несколько параллельных исправлений запросов. Если это все еще не исправляет это, то вы столкнулись с нефиксированной ошибкой и должны будете связаться с Microsoft PSS и подать отчет об ошибке. Вы должны быть в состоянии обойти проблему, добавив MAXDOP (1) к запросу, который предотвратит параллелизацию запроса.

Этот поток в SQL Team также полезен.

1
quack quixote

Возможно, CX - это сокращение от «exchange», но, поскольку оно, по-видимому, связано с параллелизмом, я бы предположил, что оно обозначало «context» (как в «context context»).

Чтобы добавить к ответу Heavyyd: CXPACKET - это тип ожидания, «который SQL Server использует для координации параллелизма - и вы можете вообще его игнорировать» ( из этого поста ). Он определен в sys.dm_os_wait_stats (MSDN, см. Таблицу типов ожидания), но я не вижу ничего, указывающего на конкретное происхождение термина. Эта таблица дает это описание:

Происходит при попытке синхронизировать итератор обмена обработчиком запросов. Вы можете рассмотреть возможность снижения степени параллелизма, если конфликт по этому типу ожидания становится проблемой.

1
A Panchal

Full form of CXPACKET is Class exchange packet and it happens which a query is running in parallelism.

1
Susan

CXPACKET stands for Class Exchange Packet. You will see this type of waits in SQL Servers where MAXDOP is set to anything but 1. MAXDOP is maximum degree of parallelism. Zero is the default of MAXDOP out of the box, and that means queries will attempt to use all the available cores. Don't leave MAXDOP set at ZERO, and don't set it to one (only one core is beat to death) unless you're sure you never want to use parallelism. It's common practice to set MAXDOP to [#of your cores - 4]. Must reserve some cores for the server itself. If you have hyperthreading this complicates the setting for MAXDOP, see MSFT article:

https://support.microsoft.com/en-us/kb/2806535

The SQL Server 2012 has a Best Practice Analyzer (SQL Server 2012 BPA), to help determine MAXDOP settings.

Watch Brent Ozar's excellent video on CXPACKET: https://www.brentozar.com/archive/2013/08/what-is-the-cxpacket-wait-type-and-how-do-you-reduce-it/