KB2887888 CORRECCIÓN: Rendimiento lento en SQL Server al crear un índice en un tipo de datos espaciales de una tabla grande en una instancia de SQL Server 2012 o SQL Server 2014

Se aplica a
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Síntomas

Cuando intenta crear un índice (mediante CREATE INDEX o ALTER INDEX) en un tipo de datos espaciales de una tabla grande en Microsoft SQL Server 2012 o SQL Server 2014, la contención es alta en el tipo de espera CMEMTHREAD y el rendimiento de SQL Server disminuye.

Resolución

Este problema se corrigió por primera vez en la siguiente actualización acumulativa de SQL Server.

Actualización acumulativa 1 para SQL Server 2014 /en-us/help/2931693

Actualización acumulativa 38 para SQL Server 2012 SP1 /en-us/help/2894115

Acerca de las actualizaciones acumulativas para SQL Server

Cada nueva actualización acumulativa para SQL Server contiene todas las revisiones y correcciones de seguridad que se incluyeron con la actualización acumulativa anterior. Consulte las actualizaciones acumulativas más recientes para SQL Server:

      

Información del paquete de actualización de revisiones Microsoft ofrece una revisión compatible. Sin embargo, esta revisión está pensada para corregir únicamente el problema que se describe en este artículo. Aplique esta revisión únicamente a los sistemas que experimenten este problema específico.

Si la revisión está disponible para su descarga, hay una sección "Descarga de revisión disponible" en la parte superior de este artículo de Knowledge Base. Si esta sección no aparece, envíe una solicitud al soporte técnico y al servicio al cliente de Microsoft para obtener la revisión.

Nota: si se producen más problemas o necesita alguna solución, es posible que tenga que crear una solicitud de servicio independiente. Se aplicarán los costos habituales de soporte técnico a las preguntas y problemas de soporte técnico adicionales que no estén relacionados con esta revisión específica. Para obtener una lista completa de los números de teléfono del servicio de soporte técnico y de atención al cliente de Microsoft, así como información acerca de cómo crear una solicitud de servicio independiente, visite el siguiente sitio web de Microsoft:

/contactus/?ws=support Nota: El formulario "Descarga de revisiones disponible" muestra los idiomas para los que está disponible la revisión. Si no ve su idioma, se debe a que no hay una revisión disponible para ese idioma.

Más información

Un tipo de espera CMEMTHREAD indica la espera en los objetos de memoria internos seguros para subprocesos. Unos niveles más altos de paralelismo de consultas pueden desencadenar la espera, lo que conduce a una disminución del rendimiento de la actividad espacial.

Esta corrección crea particiones en el CMEMTHREAD asociado al "objeto de memoria espacial" mediante la creación de particiones de nodos NUMA. Esto reduce la simultaneidad de la actividad de trabajo al número de programadores activos en un único nodo. Para sistemas con niveles más altos de programadores por nodo, se puede usar la marca de seguimiento –T8048 para particionar aún más todos los objetos de memoria que permiten la partición por programador. Use la marca de seguimiento con cuidado, ya que introduce una pequeña sobrecarga de memoria en todos los objetos de memoria con particiones de nodo NUMA.

Nota: El objeto de memoria espacial se crea cuando el SqlServerSpatial110.dll se carga en el espacio de direcciones del proceso SQL Server. En la mayoría de las condiciones, es necesario reiniciar el proceso de SQL Server para aplicar los efectos de la marca de seguimiento.

El tipo de espera CMEMTHREAD se incrementa para cualquier objeto de espera de memoria segura de subproceso, no solo para el objeto espacial. La siguiente definición de sesión de XEvent y el uso de símbolos públicos se pueden usar para identificar la línea de código específica que genera esperas CMEMTHREAD:CREAR SESIÓN DE EVENTOS wait_stacks
EN EL SERVIDOR
AGREGAR sqlos.wait_info DE EVENTO
(
      action(package0.callstack)
      where OpCode = 1 -- wait completed
            y wait_type = 191 -- CMEMTHREAD
)
add target package0.asynchronous_bucketizer (SET source_type = 1, source = 'package0.callstack'),
agregar package0.ring_buffer de destino (SET max_memory = 4096)
Con (MAX_DISPATCH_LATENCY = 1 SEGUNDOS)
Ir
Alter Event Session wait_stacks on Server State = Start
go

Ejecutar la reproducción

seleccionar event_session_address, target_name, execution_count, transmitir (target_data como XML)
Desde sys.dm_xe_session_targets XST
      combinación interna sys.dm_xe_sessions xs on (xst.event_session_address = xs.address)
where xs.name = 'wait_stacks'
go

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".