CXPACKET

(Die erneute Veröffentlichung oder Verwendung dieser Informationen in einem kommerziellen Produkt / einer kommerziellen Website ist ohne Genehmigung untersagt. Alle anderen Verwendungen sind zulässig. Im Zweifelsfall bitte fragen.)

(Zurück zur Hauptseite…)

Beschreibung:

Die einfachste Erklärung für diesen Wartetyp ist, dass parallele Pläne ausgeführt werden. Es wurde viel über diesen Wartetyp geschrieben und was man dagegen tun kann, und leider gibt es viele schlechte Ratschläge da draußen. Wenn ein Austausch-Iterator (z.B. B. Repartitionsströme) oder parallele Scanläufe, wird mindestens ein CXPACKET warten (auf den Steuerthread) und möglicherweise andere, wenn eine verzerrte Arbeitsverteilung vorliegt.

Reduzieren Sie nicht nur den Server MAXDOP, um zu versuchen, diese zu reduzieren oder zu entfernen! Bitte lesen Sie die detaillierten Erklärungen und Ratschläge in den folgenden Links.

(Books Online description: „Tritt bei parallelen Abfrageplänen auf, wenn versucht wird, den Abfrageprozessor exchange iterator zu synchronisieren. Wenn die Wartezeit zu lang ist und nicht durch Optimieren der Abfrage (z. B. Hinzufügen von Indizes) verringert werden kann, sollten Sie den Kostenschwellenwert für Parallelität anpassen oder den Parallelitätsgrad verringern.“)

Fragen/Kommentare zu diesem Wartetyp? Klicken Sie hier, um Paul eine E-Mail zu senden, insbesondere wenn Sie Informationen zu diesem Thema hinzufügen möchten.

In SQL Server-Version hinzugefügt:

Vor 2005/2005

In SQL Server-Version entfernt:

N / A

Erweiterte Ereignisse wait_type-Wert:

Der map_key-Wert in sys.dm_xe_map_values ist 187 in 2008 und 2008 R2 und 191 in 2012 und 2014 RTM. Nach 2014 RTM müssen Sie die DMV überprüfen, um den neuesten Wert zu erhalten, da sich einige map_key-Werte in späteren Builds geändert haben.

Weitere Informationen:

Die reflexartige Reaktion auf CXPACKET-Wartezeiten besteht darin, zu versuchen, sie zu entfernen oder zu reduzieren. Dies ist falsch, da sie ein ganz normaler Teil Ihrer Arbeitsbelastung sein können. Sie müssen untersuchen, wo sie auftreten, und feststellen, ob die Parallelität gültig ist oder nicht und ob sie normal funktioniert oder ob eine verzerrte Parallelität auftritt.

Ich habe zwei ausführliche Artikel über das Verständnis und die Fehlerbehebung von CXPACKET waits geschrieben sqlperformance.com:

  • Kniefall-Wartestatistik: CXPACKET
  • Weitere Informationen zu CXPACKET-Wartezeiten: Schiefe Parallelität

Beachten Sie, dass in 2016 SP2, 2017 RTMP3 und Azure SQL Database die CXPACKET-Wartezeit aufgeteilt wurde, sodass gutartige, nicht umsetzbare Parallelitätswartezeiten jetzt als CXCONSUMER-Wartezeiten angezeigt werden. Dies bedeutet, dass es weniger CXPACKET-Wartezeiten geben sollte, und die verbleibenden Wartezeiten weisen eher auf ein Leistungsproblem hin.

Bekannte Vorkommen in SQL Server (Listennummer stimmt mit der Aufrufstapelliste überein):

Die folgenden Stapel sind Beispiele für parallele Threads von verschiedenen Abfrageplanoperatoren. Es gibt viele, viele weitere Vorkommen mit ähnlichen Stapeln.

Abgekürzte Anrufstapel (Listennummer stimmt mit Liste bekannter Vorkommen überein):

  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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.