CXPACKET

(La ripubblicazione o l’utilizzo di queste informazioni in un prodotto/sito Web commerciale è vietata senza autorizzazione. Tutti gli altri usi sono consentiti. In caso di dubbio, si prega di chiedere.)

(Torna alla pagina principale…)

Descrizione:

La spiegazione più semplice di questo tipo di attesa è che ci sono piani paralleli in esecuzione. Molto è stato scritto su questo tipo di attesa e su cosa fare al riguardo, e sfortunatamente ci sono molti cattivi consigli là fuori. Quando un iteratore di scambio (ad es. Flussi di ripartizione) o corse di scansione parallele, ci sarà almeno un’attesa CXPACKET (per il thread di controllo), e possibilmente altri se c’è una distribuzione distorta del lavoro.

Non basta ridurre il server MAXDOP per cercare di ridurre o rimuovere questi! Si prega di leggere le spiegazioni dettagliate e consigli nei link qui sotto.

(Books Online description: “Si verifica con piani di query paralleli quando si tenta di sincronizzare l’iteratore di exchange del processore di query. Se l’attesa è eccessiva e non può essere ridotta sintonizzando la query (ad esempio aggiungendo indici), considerare la possibilità di regolare la soglia di costo per il parallelismo o di abbassare il grado di parallelismo.”)

Domande / commenti su questo tipo di attesa? Clicca qui per inviare una e-mail a Paul, soprattutto se hai qualche informazione da aggiungere a questo argomento.

Aggiunto nella versione SQL Server:

Pre-2005/2005

Rimosso nella versione SQL Server:

N/A

Eventi estesi wait_type valore:

Il valore map_key in sys.dm_xe_map_values è 187 nel 2008 e 2008 R2, e 191 nel 2012 e 2014 RTM. Dopo 2014 RTM, è necessario controllare il DMV per ottenere il valore più recente poiché alcuni valori map_key sono cambiati nelle build successive.

Altre informazioni:

La reazione istintiva alle attese di CXPACKET consiste nel cercare di rimuoverle o ridurle. Questo non è corretto in quanto potrebbero essere una parte perfettamente normale del tuo carico di lavoro. È necessario indagare dove si stanno verificando e determinare se il parallelismo è valido o meno e, se valido, funziona normalmente o se si verifica un parallelismo distorto.

ho scritto due articoli dettagliati sulla comprensione e la risoluzione dei problemi CXPACKET in attesa sqlperformance.com:

  • Knee-Jerk Attendere Statistiche: CXPACKET
  • Più di CXPACKET Attende: Obliqua il Parallelismo

Nota che nel 2016 SP2, 2017 RTM CU3, e di Database di SQL Azure, la CXPACKET attesa è stato suddiviso in modo che benigni, che non sono soggette a parallelismo attende ora mostrare come CXCONSUMER attende. Ciò significa che ci dovrebbero essere meno attese di CXPACKET e quelle che rimangono sono più probabili essere indicative di un problema di prestazioni.

Occorrenze note in SQL Server (il numero dell’elenco corrisponde all’elenco dello stack di chiamate):

Gli stack seguenti sono tutti esempi di thread paralleli provenienti da vari operatori del piano di query. Ci sono molte, molte altre occorrenze con pile simili.

Abbreviato stack di chiamate (numero dell’elenco corrisponde noto occorrenze elenco):

  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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.