-1

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

4 ответа4

1

Из Windows IT Pro:

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

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

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

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

1

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

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

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

1

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/

1

Полная форма CXPACKET - это пакет обмена классами, и бывает, что запрос выполняется параллельно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .