CXPACKET

(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ń):

  1. 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
  2. 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
  3. 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
  4. 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

You might also like

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.