CXPACKET

(Está prohibido volver a publicar o usar esta información en un producto/sitio web comercial sin permiso. Todos los demás usos están permitidos. En caso de duda, por favor pregunte.)

(Volver a la página principal…)

Descripción:

La explicación más sencilla de este tipo de espera es que hay planes paralelos en ejecución. Se ha escrito mucho sobre este tipo de espera y qué hacer al respecto, y desafortunadamente hay muchos malos consejos por ahí. Cuando un iterador de exchange (p. ej. Secuencias de repartición) o corridas de análisis en paralelo, habrá al menos una espera de paquete CX (para el subproceso de control), y posiblemente otras si hay una distribución sesgada del trabajo.

¡No solo reduzca el servidor MAXDOP para intentar reducir o eliminar estos! Por favor, lea las explicaciones detalladas y consejos en los enlaces a continuación.

(Descripción de Books Online: «Se produce con planes de consulta paralelos cuando se intenta sincronizar el iterador exchange del procesador de consultas. Si la espera es excesiva y no se puede reducir ajustando la consulta (como agregar índices), considere ajustar el umbral de costo para paralelismo o reducir el grado de paralelismo.»)

¿Preguntas / comentarios sobre este tipo de espera? Haga clic aquí para enviar un correo electrónico a Paul, especialmente si tiene alguna información que agregar a este tema.

Añadido en la versión de SQL Server:

Pre-2005/2005

Eliminado en la versión de SQL Server:

N/A

Eventos Extendidos wait_type valor:

El map_key valor en sys.dm_xe_map_values es 187 en 2008 y 2008 R2, y 191 en 2012 y 2014 RTM. Después de 2014 RTM, debe verificar el DMV para obtener el valor más reciente, ya que algunos valores map_key han cambiado en compilaciones posteriores.

Otra información:

La reacción instintiva a CXPACKET waits es intentar eliminarlos o reducirlos. Esto es incorrecto, ya que pueden ser una parte perfectamente normal de su carga de trabajo. Debe investigar dónde están ocurriendo y determinar si el paralelismo es válido o no, y si es válido, funciona normalmente o si hay paralelismo sesgado sucediendo.

Escribí dos artículos detallados sobre la comprensión y solución de problemas que espera el PAQUETE CX sqlperformance.com:

  • Estadísticas de espera instintivas: CXPACKET
  • Más sobre CXPACKET Waits: Paralelismo sesgado

Tenga en cuenta que en 2016 SP2, 2017 RTM CU3 y Azure SQL Database, la espera de CXPACKET se ha dividido de modo que las esperas de paralelismo benignas y no procesables ahora se muestran como esperas del CONSUMIDOR de CX. Esto significa que debería haber menos esperas de paquetes CX, y es más probable que las que queden sean indicativas de un problema de rendimiento.

Ocurrencias conocidas en SQL Server (el número de lista coincide con la lista de pila de llamadas):

Las pilas a continuación son ejemplos de subprocesos paralelos de varios operadores de planes de consulta. Hay muchas, muchas más ocurrencias con pilas similares.

Pilas de llamadas abreviadas (el número de lista coincide con la lista de ocurrencias conocidas):

  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

Deja una respuesta

Tu dirección de correo electrónico no será publicada.