CXPACKET

(republicarea, sau folosind aceste informații într-un produs comercial/site-ul, este interzisă fără permisiune. Toate celelalte utilizări sunt permise. Dacă aveți dubii, vă rugăm să întrebați.)

(înapoi la pagina principală…)

descriere:

cea mai simplă explicație a acestui tip de așteptare este că există planuri paralele care rulează. S-au scris multe despre acest tip de așteptare și ce să facem în acest sens și, din păcate, există multe sfaturi proaste acolo. Când un iterator de schimb (de ex. Fluxuri de repartiție) sau scanări paralele, va exista cel puțin o așteptare CXPACKET (pentru firul de control) și, eventual, altele dacă există o distribuție înclinată a muncii.

nu reduceți doar serverul MAXDOP pentru a încerca să le reduceți sau să le eliminați! Vă rugăm să citiți explicațiile detaliate și sfaturile din linkurile de mai jos.

(Books Online description: „apare cu planuri de interogare paralele atunci când încercați să sincronizați iteratorul de schimb al procesorului de interogare. Dacă așteptarea este excesivă și nu poate fi redusă prin reglarea interogării (cum ar fi adăugarea de indici), luați în considerare ajustarea pragului de cost pentru paralelism sau scăderea gradului de paralelism.”)

întrebări/comentarii cu privire la acest tip de așteptare? Click aici pentru a trimite Paul un e-mail, mai ales dacă aveți orice informații pentru a adăuga la acest subiect.

adăugat în SQL Server versiune:

Pre-2005/2005

eliminat în SQL Server versiune:

N/A

evenimente extinse wait_type valoare:

valoarea map_key în sys.dm_xe_map_values este 187 În 2008 și 2008 R2, și 191 În 2012 și 2014 RTM. După 2014 RTM, trebuie să verificați DMV pentru a obține cea mai recentă valoare, deoarece unele valori map_key s-au schimbat în versiunile ulterioare.

alte informații:

reacția genunchiului la cxpacket waits este de a încerca să le eliminați sau să le reduceți. Acest lucru este incorect, deoarece acestea pot fi o parte perfect normală a volumului de muncă. Trebuie să investigați unde au loc și să determinați dacă paralelismul este valid sau nu și, dacă este valid, funcționează normal sau dacă se întâmplă paralelism înclinat.

am scris două articole detaliate despre înțelegerea și depanarea cxpacket waits on sqlperformance.com:

  • statistici de așteptare pentru genunchi: Cxpacket
  • mai multe despre Cxpacket Waits: paralelism înclinat

rețineți că în 2016 SP2, 2017 RTM CU3 și Azure SQL Database, cxpacket wait a fost împărțit astfel încât paralelismul benign, care nu poate fi acționat, așteaptă să apară acum ca cxconsumer waits. Aceasta înseamnă că ar trebui să existe mai puține așteptări CXPACKET, iar cele care rămân sunt mai susceptibile de a indica o problemă de performanță.

apariții cunoscute în SQL Server (lista number matches call stack list):

stivele de mai jos sunt toate exemple de fire paralele de la diferiți operatori de planuri de interogare. Există multe, multe alte apariții cu stive similare.

stive de apeluri abreviate (numărul listei se potrivește cu lista de evenimente cunoscute):

  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

Lasă un răspuns

Adresa ta de email nu va fi publicată.