(ponowne publikowanie lub używanie tych informacji w komercyjnym produkcie/witrynie internetowej jest zabronione bez zgody. Wszystkie inne zastosowania są dozwolone. W razie wątpliwości proszę pytać.)
(powrót do strony głównej…)
opis:
najprostszym wyjaśnieniem tego typu oczekiwania jest to, że istnieją równoległe plany uruchomione. Wiele już napisano na temat tego typu czekania i co z tym zrobić. niestety jest tam wiele złych rad. Gdy iterator wymiany (np. Strumienie Repartition) lub równolegle działa skanowanie, nie będzie co najmniej jeden cxpacket czekać (na wątek kontrolny), i ewentualnie inne, jeśli jest wypaczony rozkład pracy.
nie ograniczaj tylko serwera MAXDOP, aby spróbować je zmniejszyć lub usunąć! Prosimy o zapoznanie się ze szczegółowymi wyjaśnieniami i poradami w poniższych linkach.
(opis książki Online: „występuje z równoległymi planami zapytań podczas próby synchronizacji iteratora wymiany procesora zapytań. Jeśli oczekiwanie jest nadmierne i nie można go zmniejszyć poprzez dostrajanie zapytania (np. dodanie indeksów), rozważ dostosowanie progu kosztów dla równoległości lub obniżenie stopnia równoległości.”)
pytania / komentarze na ten temat? Kliknij tutaj, aby wysłać Paul e-mail, zwłaszcza jeśli masz jakieś informacje, aby dodać do tego tematu.
dodano w wersji SQL Server:
Pre-2005/2005
usunięto w wersji SQL Server:
N/A
Rozszerzona wartość wait_type zdarzeń:
wartość map_key w sys.dm_xe_map_values wynosi 187 w 2008 i 2008 R2, a 191 w 2012 i 2014 RTM. Po RTM 2014, musisz sprawdzić DMV, aby uzyskać najnowszą wartość, ponieważ niektóre wartości map_key zmieniły się w późniejszych kompilacjach.
inne informacje:
reakcja na cxpacket polega na próbie ich usunięcia lub zmniejszenia. Jest to nieprawidłowe, ponieważ mogą one być całkowicie normalną częścią twojego obciążenia pracą. Musisz zbadać, gdzie występują i ustalić, czy równoległość jest ważna, czy nie, a jeśli jest ważna, działa normalnie lub czy ma miejsce wypaczona równoległość.
napisałem dwa szczegółowe artykuły na temat zrozumienia i rozwiązywania problemów cxpacket czeka na sqlperformance.com:
- statystyki czekania: Cxpacket
- więcej o Cxpacket Waits: Skewed Paralelism
zauważ, że w 2016 SP2, 2017 RTM CU3 i Azure SQL Database, czekanie CXPACKET zostało podzielone tak, że łagodny, niedziałający paralelism waits pojawia się teraz jako cxconsumer waits. Oznacza to, że powinno być mniej czeków CXPACKET, a te, które pozostaną, są bardziej prawdopodobne, że będą wskazywać na problem z wydajnością.
znane wystąpienia w SQL Server (numer listy pasuje do listy stosów wywołań):
poniższe stosy są przykładami równoległych wątków z różnych operatorów planu zapytań. Jest wiele, wiele więcej zdarzeń z podobnymi stosami.
skrócone stosy Połączeń (Numer listy pasuje do listy znanych zdarzeń):
- SOS_Task::PostWait+90
EventInternal::Wait+2c6
EventInternal::WaitAllowPrematureWakeup+c7
CXPipe::Pull+156
CXTransLocal::AllocateBuffers+64
CQScanXProducerNew::AllocateBuffers+31
CQScanXProducerNew::GetRowHelper+293
CQScanXProducerNew::GetRow+15
FnProducerOpen+57
FnProducerThread+851
SubprocEntrypoint+a59
SOS_Task::Param::Execute+21e
SOS_Scheduler::RunTask+a8 - SOS_Task::PostWait+90
EventInternal::Wait+2c6
EventInternal::WaitAllowPrematureWakeup+c7
XchngWait+b5
CXPort::Open+147
CQScanXProducerNew::Open+da
FnProducerOpen+44
FnProducerThread+851
SubprocEntrypoint+a59
SOS_Task::Param::Execute+21e
SOS_Scheduler::RunTask+a8 - SOS_Task::PostWait+90
EventInternal::Wait+2c6
EventInternal::WaitAllowPrematureWakeup+c7
CXPacketList::RemoveHead+e9
CXPipe::ReceivePacket+7a
CXTransLocal::ReceiveBuffers+2d
CQScanExchangeNew::GetRowFromProducer+5f
CQScanExchangeNew::GetRowHelper+66
CQScanSortNew::BuildSortTable+2a6
CQScanSortNew::OpenHelper+c0
CQScanNew::OpenHelper+41
CQScanStreamAggregateNew::Open+30
CQScanNLJoinNew::Open+24
CQScanSortNew::BuildSortTable+3a
CQScanSortNew::OpenHelper+c0
CQScanNew::OpenHelper+41
CQScanXProducerNew::Open+c8
FnProducerOpen+44
FnProducerThread+851
SubprocEntrypoint+a59
SOS_Task::Param::Execute+21e
SOS_Scheduler::RunTask+a8 - SOS_Task::PostWait+90
EventInternal::Wait+2c6
EventInternal::WaitAllowPrematureWakeup+c7
XchngWait+b5
CXPort::Open+147
CQScanExchangeNew::Open+104
CQScanHash::ConsumeBuild+fd
CQScanHash::Open+8e
CQScanSortNew::BuildSortTable+3a
CQScanSortNew::OpenHelper+c0
CQScanNew::OpenHelper+41
CQScanXProducerNew::Open+c8
FnProducerOpen+44
FnProducerThread+851
SubprocEntrypoint+a59
SOS_Task::Param::Execute+21e
SOS_Scheduler::RunTask+a8