Cxpacket

(herpubliceren, of het gebruik van deze info in een commercieel product / website, is verboden zonder toestemming. Alle andere toepassingen zijn toegestaan. Als u twijfelt, vraag het dan.)

(terug naar hoofdpagina…)

omschrijving:

De eenvoudigste verklaring voor dit wachttype is dat er parallelle plannen draaien. Er is veel geschreven over dit soort wachten en wat er aan te doen, en helaas is er veel slecht advies die er zijn. Wanneer een exchange iterator (bijv. Repartition Streams) of parallelle scan loopt, zal er ten minste een cxpacket wachten (voor de controle thread), en mogelijk anderen als er een scheve verdeling van het werk.

verminder niet alleen de server MAXDOP om te proberen deze te verminderen of te verwijderen! Lees de gedetailleerde uitleg en advies in de onderstaande links.

(Books Online description: “treedt op met parallelle query plannen bij het synchroniseren van de query processor exchange iterator. Als het wachten buitensporig is en niet kan worden verminderd door het afstemmen van de query (zoals het toevoegen van indexen), overweeg dan het aanpassen van de kostendrempel voor parallellisme of het verlagen van de mate van parallellisme.”)

vragen/opmerkingen over dit wachttype? Klik hier om Paul een e-mail te sturen, vooral als je informatie hebt om aan dit onderwerp toe te voegen.

toegevoegd in SQL Server versie:

Pre-2005/2005

verwijderd in SQL Server versie:

N/A

Extended Events wait_type waarde:

De map_key waarde in sys.dm_xe_map_values is 187 in 2008 en 2008 R2, en 191 in 2012 en 2014 RTM. Na 2014 RTM, moet je de DMV controleren om de laatste waarde te krijgen, omdat sommige map_key waarden zijn veranderd in latere builds.

Overige informatie:

de reflexreactie op cxpacket waits is om te proberen deze te verwijderen of te verminderen. Dit is onjuist omdat ze een volkomen normaal deel van uw werklast kunnen zijn. Je moet onderzoeken waar ze zich voordoen en bepalen of het parallellisme geldig is of niet, en als het geldig is, normaal werkt of dat er scheef parallellisme gebeurt.

ik schreef twee gedetailleerde artikelen over het begrijpen en oplossen van problemen cxpacket wacht op sqlperformance.com:

  • Cxpacket
  • meer over Cxpacket Waits: scheef parallellisme

merk op dat in 2016 SP2, 2017 RTM CU3 en Azure SQL Database, de cxpacket wait is gesplitst zodat goedaardige, niet-bruikbare parallellisme waits nu verschijnen als cxconsument waits. Dit betekent dat er minder cxpacket wacht, en degenen die blijven zijn meer kans om een indicatie van een prestatieprobleem zijn.

bekende voorvallen in SQL Server (lijstnummer komt overeen met call stack list):

onderstaande stapels zijn allemaal voorbeelden van parallelle threads van verschillende query plan operators. Er zijn veel, veel meer voorvallen met soortgelijke stapels.

Afgekort noemen stapels (lijst nummer overeenkomt bekend exemplaren lijst):

  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

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.