Compartir a través de


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 las mejoras de rendimiento y las opciones de configuració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 disponibles para las versiones de SQL Server 2014 y SQL Server 2012 a través de varias opciones de configuración y actualizaciones de productos. Puede considerar la posibilidad de aplicar estas actualizaciones para mejorar el rendimiento de la instancia de SQL Server. El grado de mejora que verá 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. El equipo de soporte técnico de SQL Server ha usado estas actualizaciones y cambios de configuración para lograr mejoras 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 normalmente tiene 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 de la siguiente manera:

  • La tabla 1 contiene las actualizaciones y marcas de seguimiento más recomendadas para la escalabilidad en sistemas de gama alta.
  • La tabla 2 contiene recomendaciones e instrucciones para el ajuste adicional del rendimiento.
  • 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 Versiones aplicables y intervalos de compilación.

Nota

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

  • La versión no aplicable y la compilación indican la actualización específica en la que la marca de cambio o seguimiento se convirtió en el comportamiento predeterminado. Por lo tanto, simplemente aplicar esa actualización será suficiente para obtener las ventajas.

Importante

Al habilitar correcciones con marcas de seguimiento en entornos AlwaysOn, 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 Intervalos de compilación y versión aplicables Intervalos de compilación y versión no aplicables Artículo o blog de Knowledge Base que proporciona más detalles
  • Se producen esperas altas de CMEMTHREAD.
  • SQL Server se instala en sistemas con 8 o más núcleos por socket.
T8048
  • SQL Server 2012 RTM a 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 2017 RTM a SP/CU actual
  • Se producen esperas altas 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 2017 RTM a SP/CU actual
  • Usa características que dependen de la caché del grupo de registros. (por ejemplo, AlwaysOn)
  • SQL Server se instala en sistemas con varios sockets.
T9024 Paquete de actualización acumulativa 3 para SQL Server 2012 Service Pack 1 a SP2 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 2017 RTM a SP/CU actual
CORRECCIÓN: Valor alto de 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
  • Server 2016 RTM a SP/CU actual
  • SQL Server 2017 RTM 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).
  • Observará 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 2017 RTM 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 experimentan un crecimiento y no todos los archivos crecen al mismo tiempo y provocan la 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 2017 RTM a SP/CU actual
Recomendaciones para reducir la contención de asignación en la base de datos tempdb de SQL Server.
La contención de bloqueos por subproceso pesado SOS_CACHESTORE o los planes se expulsan con frecuencia en cargas de trabajo de consulta ad hoc. T174 Nada
  • Documentación de DBCC TRACEON: marcas de seguimiento (Transact-SQL)
  • Consulte la sección Administración del tamaño de caché de Los internos de la caché del plan.
    • Las entradas de la caché del plan se expulsan debido al crecimiento en otras memorias caché o distribuidores de memoria
    • Consumo elevado de CPU debido a recompilación frecuente de consultas
    T8032
    • SQL Server 2012 RTM a SP/CU actual
    • SQL Server 2014 RTM a SP/CU actual
    Nada
    • Documentación de DBCC TRACEON: marcas de seguimiento (Transact-SQL)
    • Consulte la sección Administración del tamaño de caché de Los internos de la caché del plan.
      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
      Nada
      • 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 Nada Aumento del rendimiento de las estadísticas de actualización con SQL 2014 y SQL 2016
      El comando CHECKDB tarda mucho tiempo en bases de datos de gran tamaño.
      • T2562
      • T2549
        • SQL Server 2012 RTM a SP/CU actual
        • SQL Server 2014 RTM a SP/CU actual
        Nada
        El comando CHECKDB tarda mucho tiempo en bases de datos de gran tamaño. T2566
        • SQL Server 2012 RTM a SP/CU actual
        • SQL Server 2014 RTM a SP/CU actual
        Nada
        La ejecución de consultas simultáneas de almacenamiento de datos 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
        • Server 2016 RTM a SP/CU actual
        • SQL Server 2017 RTM a SP/CU actual
        De forma predeterminada, se deshabilitan las correcciones del optimizador de problemas de rendimiento de consultas específicas. T4199
        • SQL Server 2012 RTM a SP4
        • SQL Server 2014 RTM a la versión más reciente
        Nada
        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 2017 RTM a SP/CU actual
            • Las consultas se encuentran SOS_MEMORY_TOPLEVELBLOCKALLOCATOR y se espera CMEMTHREAD.
            • Hay poco espacio de direcciones virtuales disponibles 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 2017 RTM 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 nuevas bases de datos 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 2017 RTM a SP/CU actual
            CORRECCIÓN: la creación de bases de datos de SQL Server 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 en el artículo de Knowledge Base o la columna Recurso en pantalla de libros y considere la posibilidad de implementar las instrucciones de la columna Acciones recomendadas.

            Artículo de Knowledge Base/Recurso en pantalla de Libros Acciones recomendadas
            Establecer 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 la capacidad de cálculo de cada edición de SQL Server Enterprise Edition con licencias de licencia de servidor y acceso de cliente (CAL) está limitada a 20 núcleos por instancia de SQL Server. No hay ningún límite en el modelo de licencias de servidor basado en núcleos. 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 para cargas de trabajo ad hoc PARAMETRIZACIÓN FORZADA Las entradas de la caché del plan se expulsan debido al crecimiento de otras cachés o distribuidores de memoria. También puede encontrar la expulsión de la memoria 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 optimizar para cargas de trabajo ad hoc y también la opción de base de datos FORCED PARAMETERIZATION.
            Reducción de la paginación de la memoria del grupo de búferes en la configuración de memoria de SQL Server y consideraciones de ajuste de tamaño en SQL Server 2012 y versiones posteriores Asigne el derecho de usuario Habilitar las páginas de bloqueo en la opción de 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 % de la memoria física total. Asegúrese de que las opciones de configuración de memoria del servidor establecen las cuentas de memoria de solo los nodos configurados para usar la configuración de máscara de afinidad.
            SQL Server y páginas grandes explicadas... Opciones de optimización de SQL Server al ejecutarse 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 de almacenamiento de datos o analíticos. Tenga en cuenta que TF 834 no se recomienda si usa índices de almacén de columnas.
            Descripción de las opciones "check cache bucket count" y "access check cache quota" (Comprobación de acceso de la cuota de caché) que están disponibles en el procedimiento almacenado de 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:
            "recuento de cubos de caché de comprobación de acceso": 256
            "cuota de caché de comprobación de acceso": 1024

            Sugerencias de consulta de concesión de memoria ALTER WORKLOAD GROUP Si tiene muchas consultas que agotan concesiones de memoria grandes, reduzca request_max_memory_grant_percent el grupo de cargas de trabajo predeterminado en la configuración del regulador de recursos del 25 % 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 de SQL Server el derecho de usuario "Realizar tareas de mantenimiento de volumen" según la información del tema Libros en pantalla.
            Consideraciones para la configuración de "crecimiento automático" y "autohrink" 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 diferentes tamaños de sector para los archivos de registro de réplica principal y secundaria en el GRUPO de disponibilidad de SQL Server y entornos de logshipping Si tiene un grupo de disponibilidad en el que el registro de transacciones de la réplica principal está en un disco con tamaño de sector de 512 bytes y el registro de transacciones de la réplica secundaria está en una unidad con un tamaño de sector de 4K, es posible que tenga un problema en el que la sincronización sea lenta. En estos casos, habilitar TF 1800 debe corregir el problema. Para obtener más información, vea Marca de seguimiento 1800.
            Si 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 una marca de seguimiento de inicio. Esta marca habilita la generación de perfiles ligera en SQL Server 2014 SP2 o posterior, lo que le proporcionará la posibilidad de realizar la solución de problemas de consultas dinámicas 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 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. Simplemente aplicar la actualización acumulativa más reciente o Service Pack que incluye estas correcciones es suficiente para obtener la ventaja.

            Nota

            El nombre de 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 anterior de SQL Server. Por lo tanto, se recomienda instalar la actualización acumulativa más reciente para resolver los problemas.

            Síntomas Se requiere una actualización Artículo de Knowledge Base
            Las escrituras diligentes durante select-into para las 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 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 tienen un rendimiento deficiente en la edición estándar del producto. SQL Server 2014 RTM CU1
            SQL Server 2012 SP1 CU7
            CORRECCIÓN: Los subprocesos no están programados uniformemente en SQL Server 2012 o SQL Server 2014 Standard Edition
            Rendimiento lento debido a una caída repentina en la esperanza de vida de la página. 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 sin rendimiento mientras que la memoria de asignación para la ordenación ejecuta concesiones de memoria grandes asociadas en sistemas con una 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 sin rendimiento cuando el operador de ordenación atraviesa 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 intensa de consultas no se escala con un número creciente de núcleos en hardware NUMA y da como resultado la saturación de la CPU en SQL Server.
            Las asignaciones de memoria para los operadores de ordenación tardan mucho tiempo en completarse en sistemas NUMA con memoria grande debido a asignaciones de nodos remotos. SQL Server 2012 SP1 CU3 CORRECCIÓN: Problemas de rendimiento de SQL Server en entornos NUMA
            Errores de memoria insuficiente cuando SQL Server está instalado en una máquina NUMA con una 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 interbloqueo en SOS_CACHESTORE y SOS_SELIST_SIZED_SLOCK al compilar un índice en el tipo de datos espaciales de 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 elevado al crear 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 espacial de una tabla grande en una instancia de SQL Server 2012 o SQL Server 2014
            Problemas de SOS_PHYS_PAGE_CACHE rendimiento debido a y CMEMTHREAD espera durante la asignación de memoria en equipos de gran memoria. SQL Server 2014 RTM CU1
            SQL Server 2012 SP1 CU9
            CORRECCIÓN: Los problemas de rendimiento se producen 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 de gran tamaño. Paquete de actualización acumulativa 6 para SQL Server 2014 CORRECCIÓN: el comando DBCC CHECKDB/CHECKTABLE puede tardar más tiempo 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