У Google, похоже, нет определения этого термина.
4 ответа
Из Windows IT Pro:
О. Вы получите это только с SQL 7, потому что это происходит только с параллельными запросами. Это означает, что один поток запроса ожидает пакет сообщения от другого, и тот, на котором он ожидает, либо заблокирован по традиционной причине, либо столкнулся с некоторой ошибкой параллелизма.
CXPacket означает, что он ожидает пакет данных - т.е. результаты внутреннего запроса передаются. Обмен означает, что он ожидает контрольный пакет, т. Е. Ожидает, пока процесс дочернего процесса / брата сообщит вам, что он завершен.
Если запрос не завершен, убедитесь, что SP1 применен, поскольку в SP1 есть несколько параллельных исправлений запросов. Если это все еще не исправляет это, то вы столкнулись с нефиксированной ошибкой и должны будете связаться с Microsoft PSS и подать отчет об ошибке. Вы должны быть в состоянии обойти проблему, добавив MAXDOP(1) к запросу, который предотвратит параллелизацию запроса.
Этот поток в SQL Team также полезен.
Возможно, CX - это сокращение от "exchange", но, поскольку оно, по-видимому, связано с параллелизмом, я предполагаю, что оно обозначало "context" (как в "context context").
Чтобы добавить к ответу Heavyyd: CXPACKET - это тип ожидания, «который SQL Server использует для координации параллелизма - и вы можете вообще его игнорировать» (из этого поста). Он определен в sys.dm_os_wait_stats (MSDN, см. Таблицу типов ожидания), но я не вижу ничего, указывающего на конкретное происхождение термина. Эта таблица дает это описание:
Происходит при попытке синхронизировать итератор обмена обработчиком запросов. Вы можете рассмотреть возможность снижения степени параллелизма, если конфликт по этому типу ожидания становится проблемой.
CXPACKET расшифровывается как Class Exchange Packet. Этот тип ожидания вы увидите на серверах SQL, где для MAXDOP установлено значение, отличное от 1. MAXDOP - максимальная степень параллелизма. Ноль - это стандартная настройка MAXDOP по умолчанию, и это означает, что запросы будут пытаться использовать все доступные ядра. Не оставляйте MAXDOP установленным в ZERO и не устанавливайте его в единицу (только одно ядро избито до смерти), если вы не уверены, что никогда не захотите использовать параллелизм. Обычной практикой является установка MAXDOP на [# ваших ядер - 4]. Необходимо зарезервировать несколько ядер для самого сервера. Если у вас есть гиперпоточность, это усложняет настройку MAXDOP, см. Статью MSFT:
https://support.microsoft.com/en-us/kb/2806535
В SQL Server 2012 имеется анализатор соответствия рекомендациям (BPA SQL Server 2012), помогающий определить параметры MAXDOP.
Посмотрите отличное видео Брента Озара на CXPACKET: https://www.brentozar.com/archive/2013/08/what-is-the-cxpacket-wait-type-and-how-do-you-reduce-it/
Полная форма CXPACKET - это пакет обмена классами, и бывает, что запрос выполняется параллельно.