Actualizaciones y opciones de configuración recomendadas para SQL Server con cargas de trabajo de alto rendimiento

En este artículo se incluye una lista de mejoras de rendimiento y opciones de configuración que están disponibles para SQL Server 2012 y versiones posteriores.

Versión original del producto: SQL Server 2014, SQL Server 2012
Número de KB original: 2964518

En este artículo se describen las mejoras de rendimiento y los cambios que están disponibles para SQL Server 2014 y SQL Server versiones de 2012 a través de diversas actualizaciones de productos y opciones de configuración. Puede considerar la posibilidad de aplicar estas actualizaciones para mejorar el rendimiento de la instancia de SQL Server. El grado de mejora que vea dependerá de varios factores que incluyen el patrón de carga de trabajo, los puntos de contención, el diseño del procesador (número de grupos de procesadores, sockets, nodos NUMA, núcleos en un nodo NUMA) y la cantidad de memoria presente en el sistema. SQL Server equipo de soporte técnico ha usado estas actualizaciones y cambios de configuración para lograr ganancias de rendimiento razonables para las cargas de trabajo de los clientes que usaban sistemas de hardware que tenían varios nodos NUMA y muchos procesadores. El equipo de soporte técnico seguirá actualizando este artículo con otras actualizaciones en el futuro.

Sistemas de gama alta Un sistema de gama alta suele tener varios sockets, ocho núcleos o más por socket y medio terabyte o más de memoria.

Nota:

En SQL Server 2016 y versiones posteriores, muchas de las marcas de seguimiento mencionadas en este artículo son el comportamiento predeterminado y no es necesario habilitarlas en esas versiones.

Las recomendaciones se agrupan en tres tablas como se indica a continuación:

  • La tabla 1 contiene las actualizaciones recomendadas con más frecuencia y marcas de seguimiento para la escalabilidad en sistemas de gama alta.
  • La tabla 2 contiene recomendaciones e instrucciones para el ajuste de rendimiento adicional.
  • La tabla 3 contiene correcciones de escalabilidad adicionales que se incluyeron junto con una actualización acumulativa.

Tabla 1. Actualizaciones importantes y marcas de seguimiento para sistemas de gama alta

Revise la tabla siguiente y habilite las marcas de seguimiento en la columna Marca de seguimiento después de asegurarse de que la instancia de SQL Server cumple los requisitos de la columna Versión aplicable e intervalos de compilación.

Nota:

  • Versión y compilación aplicables indica la actualización específica en la que se introdujo el cambio o la marca de seguimiento. Si no se especifica ninguna CU, se incluyen todas las CU del SP.

  • Versión y compilación no aplicables indica la actualización específica en la que el cambio o la marca de seguimiento se convirtieron en el comportamiento predeterminado. Por lo tanto, solo aplicar esa actualización será suficiente para obtener las ventajas.

Importante

Al habilitar correcciones con marcas de seguimiento en entornos de Always On, tenga en cuenta que tiene que habilitar las marcas de corrección y seguimiento en todas las réplicas que forman parte del grupo de disponibilidad.

Escenario y síntoma que se deben tener en cuenta Marca de seguimiento Versiones y intervalos de compilación aplicables Intervalos de compilación y versión no aplicables Artículo o vínculo de blog de Knowledge Base que proporciona más detalles
  • Se producen altas esperas de CMEMTHREAD.
  • SQL Server se instala en sistemas con 8 o más núcleos por socket.
T8048
  • SQL Server RTM de 2012 al Service Pack (SP)/CU actual
  • SQL Server 2014 RTM a SP1
  • SQL Server 2014 SP2 a SP/CU actual
  • SQL Server 2016 RTM a SP/CU actual
  • SQL Server RTM de 2017 a SP/CU actual
  • Se producen altas esperas de CMEMTHREAD.
  • SQL Server se instala en sistemas con 8 o más núcleos por socket.
T8079 SQL Server 2014 SP2 a SP/CU actual
  • SQL Server 2016 RTM a SP/CU actual
  • SQL Server RTM de 2017 a SP/CU actual
  • Usa características que se basan en la caché del grupo de registros. (por ejemplo, Always On)
  • SQL Server está instalado en sistemas con varios sockets.
T9024 Paquete de actualización acumulativa 3 para SQL Server Service Pack 1 a SP2 de 2012 SQL Server 2014 RTM
  • SQL Server 2012 SP3 a SP/CUSQL actual
  • Server 2014 SP1 a SP/CU actual
  • SQL Server 2016 RTM a SP/CU actual
  • SQL Server RTM de 2017 a SP/CU actual
CORRECCIÓN: Valor elevado del contador "esperas de escritura de registro" en una instancia de SQL Server 2012 o SQL Server 2014
La instancia de SQL Server controla miles de restablecimientos de conexión debido a la agrupación de conexiones. T1236 Paquete de actualización acumulativa 9 para SQL Server 2012 Service Pack 1 a SP2 Actualización acumulativa 1 para SQL Server 2014
  • SQL Server 2012 SP3 a SP/CUSQL actual
  • Server 2014 SP1 a SP/CUSQL actual
  • Servidor 2016 RTM a SP/CU actual
  • SQL Server RTM de 2017 a SP/CU actual
  • La carga de trabajo de la aplicación implica un uso frecuente de tempdb (creación y eliminación de tablas temporales o variables de tabla).
  • Observe las solicitudes de usuario que esperan recursos de página tempdb debido a la contención de asignación.
T1118
  • SQL Server 2012 RTM a SP/CU actual
  • SQL Server 2014 RTM a SP/CU actual
  • SQL Server 2016 RTM a SP/CU actual
  • SQL Server RTM de 2017 a SP/CU actual
Mejoras de simultaneidad para la base de datos tempdb

NOTA Habilite la marca de seguimiento y agregue varios archivos de datos para la base de datos tempdb.
  • Tiene varios archivos de datos tempdb.
  • Los archivos de datos al principio se establecen en el mismo tamaño.
  • Debido a una actividad intensa, los archivos tempdb encuentran un crecimiento y no todos los archivos aumentan al mismo tiempo y provocan contención de asignación.
T1117
  • SQL Server 2012 RTM a SP/CU actual
  • SQL Server 2014 RTM a SP/CU actual
  • SQL Server 2016 RTM a SP/CU actual
  • SQL Server RTM de 2017 a SP/CU actual
Recomendaciones para reducir la contención de asignación en SQL Server base de datos tempdb
La contención de bloqueos de número elevado SOS_CACHESTORE o los planes se expulsan con frecuencia en cargas de trabajo de consultas ad hoc. T174 Ninguno
  • Las entradas de la memoria caché del plan se expulsan debido al crecimiento en otras memorias caché o en los empleados de memoria.
  • Consumo elevado de CPU debido a recompilaciones frecuentes de consultas
T8032
  • SQL Server 2012 RTM a SP/CU actual
  • SQL Server 2014 RTM a SP/CU actual
Ninguno
Las estadísticas existentes no se actualizan con frecuencia debido al gran número de filas de la tabla. T2371
  • SQL Server 2012 RTM a SP/CU actual
  • SQL Server 2014 RTM a SP/CU actual
Ninguno
  • Los trabajos de estadísticas tardan mucho tiempo en completarse.
  • No se pueden ejecutar varios trabajos de actualización de estadísticas en paralelo.
T7471 SQL Server 2014 SP1 CU6 a SP/CU actual Ninguno Mejora del rendimiento de las estadísticas de actualización con SQL 2014 & SQL 2016
El comando CHECKDB tarda mucho tiempo en bases de datos grandes.
  • T2562
  • T2549
    • SQL Server 2012 RTM a SP/CU actual
    • SQL Server 2014 RTM a SP/CU actual
    Ninguno
    El comando CHECKDB tarda mucho tiempo en bases de datos grandes. T2566
    • SQL Server 2012 RTM a SP/CU actual
    • SQL Server 2014 RTM a SP/CU actual
    Ninguno
    La ejecución de consultas de almacenamiento de datos simultáneas que tardan mucho tiempo en compilar da lugar a RESOURCE_SEMAPHORE_QUERY_COMPILE esperas. T6498 Paquete de actualización acumulativa 6 para SQL Server 2014 a SP1
    • SQL Server 2014 SP2 a SP/CUSQL actual
    • Servidor 2016 RTM a SP/CU actual
    • SQL Server RTM de 2017 a SP/CU actual
    Está solucionando problemas de rendimiento de consultas específicos Las correcciones del optimizador están deshabilitadas de forma predeterminada. T4199
    • SQL Server 2012 RTM a SP4
    • SQL Server RTM de 2014 a la versión más reciente
    Ninguno
    Experimenta un rendimiento lento mediante operaciones de consulta con tipos de datos espaciales.
    • T6532
    • T6533
    • T6534
    • SQL Server 2012 SP3 a SP/CU actual
    • SQL Server 2014 SP2 a SP/CU actual
      • SQL Server 2016 RTM a SP/CU actual
      • SQL Server RTM de 2017 a SP/CU actual
        • Las consultas encuentran SOS_MEMORY_TOPLEVELBLOCKALLOCATOR y CMEMTHREAD espera.
        • Hay poco espacio de direcciones virtuales disponible para el proceso de SQL Server.
        T8075
        • SQL Server 2012 SP2 CU8 a SP/CU actual
        • SQL Server 2014 RTM CU10 a SP/CU actual
        • SQL Server 2016 RTM a SP/CU actual
        • SQL Server RTM de 2017 a SP/CU actual
        CORRECCIÓN: Error de memoria insuficiente cuando el espacio de direcciones virtuales del proceso de SQL Server es bajo en SQL Server
        • SQL Server se instala en una máquina con grandes cantidades de memoria.
        • La creación de bases de datos nuevas tarda mucho tiempo.
        T3449
        • SQL Server 2012 SP3 CU3 a SP/CU actual
        • SQL Server 2014 RTM CU14 a rtm cu actual
        • SQL Server 2014 SP1 CU7 a SP/CU actual
        • SQL Server 2016 RTM a SP/CU actual
        • SQL Server RTM de 2017 a SP/CU actual
        CORRECCIÓN: la creación de SQL Server base de datos en un sistema con un gran volumen de memoria tarda más de lo esperado

        Tabla 2. Consideraciones generales y procedimientos recomendados para mejorar el rendimiento de la instancia de SQL Server

        Revise el contenido de la columna Knowledge Base article/Books Online Resource y considere la posibilidad de implementar las instrucciones en la columna Acciones recomendadas.

        Artículo de Knowledge Base/Recurso de libros en pantalla Acciones recomendadas
        Configurar la opción de configuración del servidor grado máximo de paralelismo Use el procedimiento almacenado sp_configure para realizar cambios de configuración en Configurar la opción de configuración del servidor grado máximo de paralelismo para la instancia de SQL Server según el artículo de Knowledge Base.
        Límites de capacidad de proceso por edición de SQL Server Enterprise Edition con licencias de licencia de servidor y acceso de cliente (CAL) se limita a 20 núcleos por instancia de SQL Server. No hay límites en el modelo de licencias de servidor basado en Núcleo. Considere la posibilidad de actualizar la edición de SQL Server a la SKU adecuada para aprovechar todos los recursos de hardware.
        Rendimiento lento en Windows Server al usar el plan de energía "equilibrado" Revise el artículo y trabaje con el administrador de Windows para implementar una de las soluciones que se indican en la sección "Resolución" del artículo.
        Asigne manualmente nodos NUMA a grupos K.
        Optimización de cargas de trabajo ad hocFORCED PARAMETERIZATION Las entradas de la memoria caché del plan se expulsan debido al crecimiento en otras memorias caché o en los empleados de memoria. También puede encontrarse con la expulsión de la caché del plan cuando la memoria caché alcanza su número máximo de entradas. Además de la marca de seguimiento 8032 descrita anteriormente, considere la opción de servidor optimizar para cargas de trabajo ad hoc y también la opción de base de datos FORCED PARAMETERIZATION .
        Cómo reducir la paginación de la memoria del grupo de búferes en SQL ServerMemory configuration and sizing considerations in SQL Server 2012 and later versions Asigne el derecho de usuario Habilitar las páginas de bloqueo en memoria (Windows) a la cuenta de inicio del servicio SQL. Consulte Habilitación de la característica "páginas bloqueadas" en SQL Server 2012. Establezca la memoria máxima del servidor en aproximadamente el 90 por ciento de la memoria física total. Asegúrese de que las opciones de configuración de memoria del servidor solo tienen en cuenta la memoria de los nodos configurados para usar la configuración de máscara de afinidad.
        SQL Server y páginas grandes explicadas...Opciones de ajuste para SQL Server cuando se ejecutan en cargas de trabajo de alto rendimiento Considere la posibilidad de habilitar TF 834 si tiene un servidor con una gran cantidad de memoria, especialmente con una carga de trabajo analítica o de almacenamiento de datos. Tenga en cuenta que TF 834 no se recomienda si usa índices de almacén de columnas.
        Descripción de las opciones "recuento de cubos de caché de comprobación de acceso" y "cuota de caché de comprobación de acceso" que están disponibles en el procedimiento almacenado sp_configure Use las opciones de configuración del servidor de comprobación de acceso para configurar estos valores según las recomendaciones del artículo de Knowledge Base. Los valores recomendados para sistemas de gama alta son los siguientes:
        "access check cache bucket count": 256
        "cuota de caché de comprobación de acceso": 1024

        Sugerencias de consulta de concesión de memoriaALTER WORKLOAD GROUP Si tiene muchas consultas que agotan grandes concesiones de memoria, reduzca request_max_memory_grant_percent para el grupo de cargas de trabajo predeterminado en la configuración del regulador de recursos del 25 por ciento predeterminado a un valor inferior. Las nuevas opciones de concesión de memoria de consulta están disponibles (min_grant_percent y max_grant_percent) en SQL Server
        Inicialización instantánea de archivos Trabaje con el administrador de Windows para conceder a la cuenta de servicio SQL Server el derecho de usuario "Realizar tareas de mantenimiento por volumen" según la información del tema Libros en pantalla.
        Consideraciones sobre la configuración de "crecimiento automático" y "autoshrink" en SQL Server Compruebe la configuración actual de la base de datos y asegúrese de que están configuradas según las recomendaciones del artículo de Knowledge Base.
        Puntos de comprobación de base de datos (SQL Server) Considere la posibilidad de habilitar puntos de control indirectos en bases de datos de usuario para optimizar el comportamiento de E/S en SQL Server 2012 y 2014.
        CORRECCIÓN: Sincronización lenta cuando los discos tienen tamaños de sector diferentes para los archivos de registro de réplica principal y secundaria en SQL Server entornos de grupo de disponibilidad y registro Si tiene un grupo de disponibilidad en el que el registro de transacciones de la réplica principal se encuentra en un disco con un tamaño de sector de 512 bytes y el registro de transacciones de la réplica secundaria está en una unidad con tamaño de sector 4K, es posible que tenga un problema en el que la sincronización sea lenta. En estos casos, la habilitación de TF 1800 debe corregir el problema. Para obtener más información, vea Marca de seguimiento 1800.
        Si el SQL Server aún no está enlazado a la CPU y una sobrecarga del 1,5 % al 2 % es insignificante para las cargas de trabajo, se recomienda habilitar TF 7412 como marca de seguimiento de inicio. Esta marca permite la generación de perfiles ligera en SQL Server SP2 de 2014 o posterior, lo que le permitirá realizar la solución de problemas de consultas en directo en entornos de producción.

        Tabla 3. Correcciones de rendimiento que se incluyen en una actualización acumulativa

        Revise la descripción de la columna Síntomas y aplique las actualizaciones necesarias en la columna Actualización necesaria en los entornos aplicables. Puede revisar el artículo de Knowledge Base para obtener más información sobre los problemas respectivos. Estas recomendaciones no requieren que habilite marcas de seguimiento adicionales como parámetros de inicio. Basta con aplicar la última actualización acumulativa o Service Pack que incluye estas correcciones para obtener la ventaja.

        Nota:

        El nombre cu de la columna Actualización necesaria proporciona la primera actualización acumulativa de SQL Server que resuelve este problema. Una actualización acumulativa contiene todas las revisiones y todas las actualizaciones que se incluyeron con la versión de actualización de SQL Server anterior. Por lo tanto, se recomienda instalar la actualización acumulativa más reciente para resolver los problemas.

        Síntomas Actualización necesaria Artículo de Knowledge Base
        Las escrituras diligentes durante la selección para tablas temporales provocan problemas de rendimiento. SQL Server 2012 SP2 CU1
        SQL Server 2012 SP1 CU10
        CORRECCIÓN: Rendimiento deficiente en E/S al ejecutar la operación de selección en tabla temporal en SQL Server 2012
        Se encuentra PWAIT_MD_RELATION_CACHE o MD_LAZYCACHE_RWLOCK espera después de que se anule una ALTER INDEX ... ONLINE operación de consulta. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU9
        CORRECCIÓN: El rendimiento disminuye después de un ALTER INDEX... La operación ONLINE se anula en SQL Server 2012 o SQL Server 2014
        Las consultas de repente funcionan mal en la edición estándar del producto. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU7
        CORRECCIÓN: Los subprocesos no se programan uniformemente en SQL Server 2012 o SQL Server Standard Edition 2014
        Rendimiento lento debido a una caída repentina en la esperanza de vida de Page. SQL Server 2012 SP1 CU4 CORRECCIÓN: Puede experimentar problemas de rendimiento en SQL Server 2012
        Uso elevado de CPU por monitor de recursos en sistemas con configuración NUMA, memoria grande y "memoria máxima del servidor" establecida en un valor bajo. SQL Server 2012 SP1 CU3 CORRECCIÓN: Pico de CPU cuando no hay carga en un servidor después de instalar SQL Server 2012 en el servidor
        Programador que no produce rendimiento mientras que la memoria de asignación para ordenación ejecuta concesiones de memoria grandes asociadas en sistemas con gran cantidad de memoria instalada. SQL Server 2012 SP1 CU2 CORRECCIÓN: Error 17883 al ejecutar una consulta en un servidor que tiene muchas CPU y una gran cantidad de memoria en SQL Server 2012 o en SQL Server 2008 R2
        Programador que no produce rendimiento cuando el operador de ordenación recorre muchos cubos del grupo de búferes en sistemas con memoria grande. SQL Server 2012 SP1 CU1 CORRECCIÓN: "El proceso parece no producir en scheduler" mensaje de error al ejecutar una consulta en SQL Server 2012
        Uso elevado de CPU al ejecutar consultas simultáneas que tardan mucho tiempo en compilarse en sistemas con varios nodos NUMA y muchos núcleos. SQL Server 2012 SP2 CU1
        SQL Server 2014 RTM CU2
        CORRECCIÓN: La carga de trabajo de compilación de consultas intensa no se escala con un número creciente de núcleos en el hardware NUMA y provoca saturación de CPU en SQL Server
        Las asignaciones de memoria para operadores de ordenación tardan mucho tiempo en completarse en sistemas NUMA con gran memoria debido a las asignaciones de nodos remotos. SQL Server 2012 SP1 CU3 CORRECCIÓN: SQL Server problemas de rendimiento en entornos NUMA
        Errores de memoria insuficiente cuando se instala SQL Server en una máquina NUMA con gran cantidad de RAM y SQL Server tiene muchas páginas externas. SQL Server 2012 RTM CU1 CORRECCIÓN: Error de memoria insuficiente al ejecutar una instancia de SQL Server 2012 en un equipo que usa NUMA
        Contención de bloqueo de número en SOS_CACHESTORE y SOS_SELIST_SIZED_SLOCK al compilar un índice en el tipo de datos espaciales en una tabla grande. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU7
        CORRECCIÓN: Rendimiento lento en SQL Server 2012 o SQL Server 2014 al compilar un índice en un tipo de datos espacial de una tabla grande
        Tipo de espera CMEMTHREAD alto al compilar un índice en un tipo de datos espacial en tablas grandes. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU7
        CORRECCIÓN: Rendimiento lento en SQL Server al compilar un índice en un tipo de datos espaciales de una tabla grande en una instancia de SQL Server 2012 o SQL Server 2014
        Problemas de rendimiento debidos a las esperas de SOS_PHYS_PAGE_CACHE CMEMTHREAD durante la asignación de memoria en equipos con memoria grande. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU9
        CORRECCIÓN: Se producen problemas de rendimiento en entornos NUMA durante el procesamiento de páginas externas en SQL Server 2012 o SQL Server 2014
        El comando CHECKDB tarda mucho tiempo en bases de datos grandes. Paquete de actualización acumulativa 6 para SQL Server 2014 CORRECCIÓN: El comando DBCC CHECKDB/CHECKTABLE puede tardar más en SQL Server 2012 o SQL Server 2014

        Notas importantes

        Referencias

        Se aplica a

        • SQL Server 2014 Enterprise
        • SQL Server 2014 Enterprise Core
        • SQL Server 2014 Business Intelligence
        • SQL Server 2014 Developer
        • SQL Server 2014 Standard
        • SQL Server 2014 Web
        • SQL Server 2014 Express
        • SQL Server 2012 Business Intelligence
        • SQL Server 2012 Developer
        • SQL Server 2012 Enterprise
        • SQL Server 2012 Standard
        • SQL Server 2012 Web
        • SQL Server 2012 Enterprise Core