Este artículo describe las mejoras de rendimiento y los cambios que están disponibles para Microsoft SQL Server 2012 y versiones de SQL Server 2014 a través de diversas opciones de configuración y actualizaciones de productos. Puede aplicar estas actualizaciones con el fin de mejorar el rendimiento de la instancia de SQL Server. El grado de mejora que vea dependerá de diversos factores que incluyen el modelo de carga de trabajo, puntos de contención, diseño del procesador (número de grupos de procesador, sockets, nodos NUMA, núcleos en un nodo NUMA) y la cantidad de memoria presente en el sistema. Equipo de soporte técnico de Microsoft SQL Server ha utilizado estas actualizaciones y cambios de configuración para obtener ganancias de rendimiento aceptable para cargas de trabajo de cliente que utilizan sistemas de hardware que tenía varios nodos NUMA y gran cantidad de procesadores. El equipo de soporte seguirá actualizando este artículo con otras actualizaciones en el futuro. Sistemas high-end Normalmente, un sistema high-end tiene varios sockets, núcleos de ocho o más por cada socket y un terabyte la mitad o más de memoria.
Nota para 2016 de SQL Server y versiones posteriores
Muchos de los indicadores de traza mencionados en este artículo es el comportamiento predeterminado y no tiene que habilitarlos en esas versiones. Consulte el artículo de Knowledge Base correspondiente (KB4465518)para esas versiones en qué configuraciones cambiar para lograr el máximo rendimiento.
Cómo aplicar las actualizaciones recomendadas y mejorar el rendimiento de SQL Server 2012 y 2014 de SQL Server
Las recomendaciones se agrupan en las tres tablas siguientes:
-
La tabla 1 contiene las actualizaciones con mayor frecuencia recomendadas y los indicadores de traza para la escalabilidad de los sistemas high-end.
-
Tabla 2 contiene recomendaciones e instrucciones para ajustar el rendimiento adicional.
-
La tabla 3 contiene correcciones adicionales de escalabilidad que se incluyeron junto con una actualización acumulativa.
Nota De contexto adicional, comprobar después de la entrada desde el equipo de soporte de SQL Server:
Revise la siguiente tabla y habilitarlas en la columna de indicador de traza después de asegurarse de que la instancia de SQL Server cumple los requisitos en la columna versión aplicable y los intervalos de generación .
Notas:
-
Versión aplicable y compilación indica la actualización específica en que se introdujo el indicador de traza o de cambio. Si no se especifica ningún CU CU todas en el SP se incluyen.
-
No aplicable versión y compilaciónindica que la actualización en el que el indicador de traza o de cambio, se convirtió en el comportamiento predeterminado. Por lo tanto, sólo se aplica a dicha actualización será suficiente para obtener beneficios.
Importante: Al habilitar las correcciones con los indicadores de traza siempre en entornos, ten en cuenta que tiene que habilitar las marcas de revisión y seguimiento de todas las réplicas que forman parte del grupo de disponibilidad.
Escenario y síntoma a tener en cuenta |
Indicador de traza |
Rangos de versión y compilación aplicables |
No versión aplicable y rangos de generación |
Vínculo de Blog/artículo de Knowledge Base que proporciona más detalles |
Encontrar alta espera CMEMTHREAD. SQL Server se instala en sistemas con 8 o más núcleos por socket |
T8048 |
SQL Server 2012 RTM a Service Pack actual (SP) /CU SQL Server 2014 RTM a SP1 |
Service Pack 2 de SQL Server de 2014 al SP/CU actual RTM de SQL Server de 2016 a SP/CU actual RTM de SQL Server 2017 a SP/CU actual |
Escalamiento de CSS servicios blog post que cubre este tema. |
Encontrar alta espera CMEMTHREAD. SQL Server se instala en sistemas con 8 o más núcleos por socket |
T8079 |
Service Pack 2 de SQL Server de 2014 al SP/CU actual |
RTM de SQL Server de 2016 a SP/CU actual RTM de SQL Server 2017 a SP/CU actual |
|
Usa las características que se basan en la caché de grupo de registro (por ejemplo, siempre activado) SQL Server se instala en sistemas con varios sockets. |
T9024 |
CU3 de SQL Server 2012 SP1 a SP2 RTM de SQL Server de 2014 |
Service Pack 3 de SQL Server 2012 actual SP/CU SP1 de SQL Server de 2014 al actualSP/CU RTM de SQL Server 2016aSP/CU actual RTM de SQL Server 2017aSP/CU actual |
2809338Corregir: alto valor contador "esperas de escritura de registro" en una instancia de SQL Server 2012 |
La instancia de SQL Server es controlar miles de conexión se restablece debido a la agrupación de conexiones. |
T1236 |
SQL Server 2012 SP1 CU9 a SP2 |
Service Pack 3 de SQL Server 2012 para SP/CU actual SQL Server SP1 de 2014 al actual SP/CU RTM de SQL Server de 2016 a SP/CU actual RTM de SQL Server 2017 a SP/CU actual |
2926217Corregir: se producen problemas de rendimiento cuando aumenta la actividad de bloqueo de base de datos de SQL Server |
La carga de trabajo de la aplicación implica el uso de tempdb frecuentes (creación y colocación de tablas temporales o variables de tabla). Observe las solicitudes del usuario esperando recursos de página de tempdb debido a contención de asignación. |
T1118 [véase la Nota] |
SQL Server 2012 RTM a SP/CU actual RTM de SQL Server de 2014 al Actual SP/CU |
RTM de SQL Server de 2016 a SP/CU actual RTM de SQL Server 2017 a SP/CU actual |
328551Mejoras de concurrencia para la base de datos tempdbNota: Activar el indicador de traza y agregue varios archivos de datos de la base de datos tempdb. |
Tiene varios archivos de datos tempdb. Los archivos de datos en primer lugar se establecen en el mismo tamaño. Debido a la actividad intensa, archivos de tempdb encuentran crecimiento y no todos los archivos crecen al mismo tiempo y causan conflictos de asignación. |
T1117 |
SQL Server 2012 RTM a SP/CU actual RTM de SQL Server de 2014 al Actual SP/CU |
RTM de SQL Server de 2016 a SP/CU actual RTM de SQL Server 2017 a SP/CU actual |
2154845Recomendaciones para reducir la contención de asignación en la base de datos de tempdb de SQL Server |
Mucha contención de bloqueo por bucle SOS_CACHESTORE o los planes son que va a expulsar con frecuencia en las cargas de trabajo de consultas ad hoc. |
T174 |
SQL Server 2012 SP1 CU14 a SP/CU actual CU6 de RTM de SQL Server de 2014 al Actual SP/CU |
None |
Documentación de TF 8032 Consulte la sección Administración del tamaño de caché de Plan Internals de caché |
Las entradas de la caché de planes se desalojan debido al crecimiento en otras cachés o empleados de memoria Consumo elevado de CPU debido a la frecuentes recompilaciones de consultas |
T8032 |
SQL Server 2012 RTM a SP/CU actual RTM de SQL Server de 2014 al Actual SP/CU |
None |
Documentación de TF 8032 Consulte la sección Administración del tamaño de caché de Plan Internals de caché |
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 RTM de SQL Server de 2014 al Actual SP/CU |
None |
2754171Cambiar el umbral de las estadísticas de actualización automática para tablas con gran número de filas |
Trabajos de estadísticas tardan mucho en completarse No se puede ejecutar varias tareas de actualización de estadísticas en paralelo |
T7471 |
SQL Server 2014 SP1 CU6 a SP/CU actual |
None |
3156157 ejecuta simultáneamente varias estadísticas de actualización de estadísticas diferentes en una sola tabla está disponible
Aumento del performance de Update Statistics con 2014 de SQL Server y SQL Server 2016 |
Comando CHECKDB tarda mucho tiempo para grandes bases de datos. |
T2562T2549 |
SQL Server 2012 RTM a SP/CU actual RTM de SQL Server de 2014 al Actual SP/CU |
None |
2634571Mejoras para el comando DBCC CHECKDB pueden resultar en un rendimiento más rápido cuando se utiliza la opción PHYSICAL_ONLY de de |
Comando CHECKDB tarda mucho tiempo para grandes bases de datos. |
T2566 |
SQL Server 2012 RTM a SP/CU actual RTM de SQL Server de 2014 al Actual SP/CU |
None |
Consulte T2566 detalles de DBCC TRACEON - indicadores de traza. |
Ejecutar consultas de almacén de datos simultáneas tardan tiempo compilan resultados de tiempo en espera RESOURCE_SEMAPHORE_QUERY_COMPILE. |
T6498 |
Service Pack 2 de SQL Server de 2014 al SP/CU actual RTM de SQL Server de 2016 a SP/CU actual RTM de SQL Server 2017 a SP/CU actual |
3024815Consultas grandes espera compilación RESOURCE_SEMAPHORE_QUERY_COMPILE de SQL Server de 2014 |
|
Solucionar problemas de rendimiento de consultas específicas Optimizer correcciones están deshabilitados de forma predeterminada |
T4199 |
SQL Server 2012 RTM a SP4 RTM de SQL Server de 2014 a más tardar |
None |
974006De SQL Server consulta optimizador hotfix traza indicador 4199 modelo de servicio |
Experimenta rendimiento lento con las operaciones de consulta con los tipos de datos espaciales |
T6532 T6533 T6534 |
Service Pack 3 de SQL Server 2012 para SP/CU actual Service Pack 2 de SQL Server de 2014 al SP/CU actual |
RTM de SQL Server de 2016 a SP/CU actual RTM de SQL Server 2017 a SP/CU actual |
3107399Las mejoras de rendimiento espacial en SQL Server 2012 y 2014 |
Encuentran las consultasSOS_MEMORY_TOPLEVELBLOCKALLOCATORyCMEMTHREADespera Taquí está el espacio virtual de direcciones disponible muy bajopara el proceso de SQL Server |
T8075 |
SQL Server 2012 SP2 CU8 a SP/CU actual CU10 de RTM de SQL Server de 2014 Actual SP/CU |
RTM de SQL Server 2016aSP/CU actual RTM de SQL Server 2017aSP/CU actual |
3074434Error de memoria cuando el espacio de direcciones virtuales del proceso de SQL Server es muy poco memoria disponible insuficiente 4077105Memoria insuficiente al espacio de direcciones virtuales del proceso de SQL Server es muy bajo |
SQL Server está instalado en un equipo con grandes cantidades de memoria Creación de nuevas bases de datos tarda mucho tiempo |
T3449 |
CU3 de SQL Server 2012 SP3 a SP/CU actual CU14 de RTM de SQL Server de 2014 al actual CU RTM CU7 de SP1 de SQL Server de 2014 al SP actual/CU |
RTM de SQL Server 2016aSP/CU actual RTM de SQL Server 2017aSP/CU actual |
3158396De SQL Server creación de base de datos en un sistema con un gran volumen de memoria tarda más de lo esperado |
Revise el contenido de la columna de Libros y artículo de Knowledge Base de recursos en línea y considere implementar la orientación en la columna acciones recomendadas .
Libros y artículo de Knowledge Base de recursos en línea |
Acciones recomendadas |
2806535 Recomendaciones y directrices para la opción de configuración "max degree of parallelism" en SQL Server |
Utilice el procedimiento almacenado sp_configure para realizar cambios de configuración en "grado máximo de paralelismo" para la instancia de SQL Server según el artículo de Knowledge Base. |
Enterprise Edition con servidor + licencias de acceso de cliente (CAL) licencias está limitada a 20 núcleos por cada instancia de SQL Server. No hay límites en el modelo de licencias de servidor basado en el núcleo. Considere la posibilidad de actualizar su edición de SQL Server para el SKU adecuado para aprovechar todos los recursos de hardware. |
|
2207548 rendimiento lento en Windows Server 2008 R2 cuando se utiliza el Plan de energía "Equilibrado" |
Revisar 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. |
2506384 cómo configurar manualmente la asignación de grupos de K en equipos multiprocesador |
Asignar manualmente los nodos NUMA a los grupos de K. Para obtener más información, consulte el artículo siguiente: |
Las entradas de la caché de planes se expulsó debido al crecimiento en otras cachés o empleados de memoria. También se puede encontrar la expulsión de la caché de plan cuando llega a su número máximo de entradas de la caché. Además de indicador de traza 8032 descritas anteriormente, considere la opción de servidor Optimizar para cargas de trabajo ad hoc y también la opción de base de datos de PARAMETRIZACIÓN FORZADA . |
|
918483Cómo reducir la paginación de la memoria de grupo de búfer en la versión de 64 bits de SQL Server 2663912La configuración de memoria y consideraciones en SQL Server 2012 y 2014 de tamaño |
Asignar al usuario "Bloquear páginas en memoria" derecho a la cuenta de inicio de servicio SQL. Vea cómo habilitar la característica "páginas bloqueadas" en SQL Server 2012. Establecer la memoria máxima del servidor al 90 por ciento del total de memoria física. Asegúrese de que la configuración "memoria máxima del servidor" de cuentas para la memoria de sólo los nodos que están configurados para utilizar la configuración de máscara de afinidad. |
Considere habilitar TF 834 si tiene un servidor con una gran cantidad de memoria, especialmente con una carga de trabajo de análisis o datos depósito. Tenga en cuenta que que tf 834 no se recomienda si utilizas columnstore índices. |
|
955644 descripción del "recuento de cubo de caché de verificación de acceso" y "cuota de caché de comprobación de acceso" opciones que están disponibles en el procedimiento almacenado sp_configure |
Utilice sp_configure para configurar estos valores según las recomendaciones del artículo de Knowledge Base. Los valores recomendados para los sistemas high-end son los siguientes: "recuento de depósitos de caché de comprobación de acceso": 256 "cuota de caché de comprobación de acceso": 1024 |
Si tiene muchas consultas son las donaciones de agotar grandes cantidades de memoria, reduzca la request_max_memory_grant_percent para el grupo de carga de trabajo predeterminado en la configuración del regulador de recursos desde el 25% de forma predeterminada en un valor inferior. Opciones de concesión de memoria de consulta nuevo están disponibles (min_grant_percent y max_grant_percent) en SQL Server |
|
Trabajar con el Administrador de Windows para conceder a la cuenta de servicio de SQL Server al usuario "Realizar tareas de mantenimiento de volúmenes" derecha según la información en el tema de libros en pantalla. |
|
Consideraciones de 315512 para la configuración de "crecimiento automático" y "autoshrink" en SQL Server |
Comprobar la configuración actual de la base de datos y asegúrese de que estén configurados según las recomendaciones contenidas en el artículo de Knowledge Base. |
Considere habilitar los puntos de control indirectos en bases de datos de usuario para optimizar el comportamiento de i/OS en SQL Server 2012 y 2014. |
|
3009974Corregir: ralentizar la sincronización cuando los discos tienen tamaños de sector diferente para los archivos de registro de réplica primaria y secundaria en entornos SQL Server AG y Logshipping |
Si tiene un grupo de disponibilidad en el registro de transacciones en la réplica principal está en un disco con tamaño de sector de 512 bytes y registro de transacciones de réplica secundario está en una unidad con tamaño de sector de 4K, que tenga un problema donde la sincronización es muy lenta. En estos casos, la habilitación de 1800 TF debe corregir el problema. |
Ligero de generación de perfiles 3170113actualización para exponer estadísticas de ejecución de consulta por operador en el plan de presentación XML y eventos extendidos en el SP2 de SQL Server de 2014 |
Si su SQL Server ya no está vinculado a la CPU y una sobrecarga de 1,5 a 2% es insignificante para sus cargas de trabajo, se recomienda que habilitar TF 7412 como un indicador de traza de inicio. Este indicador permite ligero de generación de perfiles en SQL Server 2014 SP2 o posterior, que le proporcionará la capacidad de live consulta solución de problemas en entornos de producción. |
Revise la descripción de la columna de síntomas y aplique las actualizaciones necesarias en la columna de actualización necesaria en entornos aplicables. Puede revisar el artículo de Knowledge Base para obtener más información acerca de los problemas respectivos. Estas recomendaciones no es necesario habilitar los indicadores de traza adicionales como parámetros de inicio. Sólo se aplica a la última actualización acumulativa o Service Pack que incluye estas revisiones es suficiente para obtener el beneficio. Nota: El nombre en la columna requiere actualización CU proporciona la primera actualización acumulativa de SQL Server que resuelve este problema. Una actualización acumulativa contiene todas las revisiones y publicación de la actualización de todas las actualizaciones que se incluyeron con la anterior de SQL Server. Por lo tanto, recomendamos que instale la actualización acumulativa más reciente para resolver los problemas.
Síntomas |
Actualización necesaria |
Artículo de Knowledge Base |
Diligente se escribe durante la selección en tablas temporales causa problemas de rendimiento. |
Seleccione de bajo rendimiento de i/OS al ejecutar 2958012 en funcionamiento de la tabla temporal en SQL Server 2012 |
|
Encontrar PWAIT_MD_RELATION_CACHE o MD_LAZYCACHE_RWLOCK esperar tras un ALTER INDEX... En línea se anula la operación de consulta. |
2926712 rendimiento disminuye después un ALTER INDEX... Se anulará la operación en línea de SQL Server 2012 o 2014 de SQL Server |
|
Consultas de repente rendimiento bajo en la edición estándar del producto. |
2879373 los subprocesos no se programan uniformemente en SQL Server 2012 o Standard Edition de SQL Server de 2014 |
|
Rendimiento lento debido a una caída repentina en la esperanza de vida. |
2845380 puede experimentar problemas de rendimiento en SQL Server 2012 |
|
Uso de CPU alto por el monitor de recursos en sistemas con configuración NUMA, grandes cantidades de memoria y "max server memory" se establece en un valor bajo. |
2813214 pico de CPU cuando no hay ninguna carga en un servidor después de instalar SQL Server 2012 en el servidor |
|
Concede no ofrecimiento del programador mientras memoria de asignación para ordenar grandes cantidades de memoria asociada ejecuta en sistemas con gran cantidad de memoria instalada. |
2801379 REVISIÓN: El Error 17883 al ejecutar una consulta en un servidor que tiene varias CPU y una gran cantidad de memoria en SQL Server 2012 o en SQL Server 2008 R2 |
|
Sin ofrecimiento del programador cuando el operador sort recorre muchos depósitos en el grupo de búferes en sistemas con grandes cantidades de memoria. |
2762557 mensaje de error "Proceso de < lista de bloque > parece sin ofrecimiento en programador < ID >" cuando ejecuta una consulta en SQL Server 2012 |
|
Uso intensivo de CPU cuando se ejecutan consultas simultáneas que toman mucho tiempo en compilar en sistemas con varios nodos NUMA y número de núcleos. |
2928300 carga de trabajo de compilación de consulta intensa no escala con un creciente número 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 grandes cantidades de memoria debido a las asignaciones del nodo remoto. |
2819662 problemas de rendimiento de SQL Server en entornos de NUMA |
|
"Memoria insuficiente" cuando SQL Server está instalado en un equipo NUMA con gran cantidad de memoria RAM y de SQL Server tiene un montón de páginas externas. |
2688697 error de falta de memoria al ejecutar una instancia de SQL Server 2012 en un equipo que utiliza NUMA |
|
Contención de bloqueo por bucle en SOS_CACHESTORE y SOS_SELIST_SIZED_SLOCK al crear un índice espacial tipo de datos en una tabla grande. |
2887899 rendimiento lento en SQL Server 2014 al compilar un índice en un tipo de datos espacial de una tabla grande o de SQL Server 2012 |
|
Alta CMEMTHREAD tipo de espera al crear un índice en un tipo de datos espaciales en tablas grandes. |
2887888 rendimiento lento en SQL Server cuando se genera un índice en un tipo de datos espacial de una tabla grande en un 2012 de SQL Server o una instancia de SQL Server de 2014 |
|
Problemas de rendimiento debido a SOS_PHYS_PAGE_CACHE y CMEMTHREAD espera durante la asignación de memoria en equipos con mucha memoria. |
2926223Se producen problemas de rendimiento en entornos de NUMA durante el procesamiento de SQL Server 2012 o 2014 de SQL Server la página externa |
|
Comando CHECKDB tarda mucho tiempo para grandes bases de datos. |
CORREGIR 3029825 : DBCC CHECKDB tardan más tiempo en ejecutarse cuando intervienen UDT de CLR de SQL |
Notas importantes
-
Si todas las condiciones en la tabla 1 se aplican a usted:
-
Guía para el año 2014 de SQL Server: aplicar al menos CU1 para RTM y agregue "- T8048 – T9024 – T1236 – T1117 – T1118" a la lista de parámetros de inicio de SQL Server.
-
Guía para SQL Server 2012: aplicar SP2 y agregue "- T8048 – T9024 – T1236 – T1117 – T1118" a la lista de parámetros de inicio de SQL Server.
-
-
Para obtener información general acerca de cómo utilizar los indicadores de traza, consulte el tema de Los indicadores de traza en SQL Server Books Online.
-
Puede encontrar más información sobre el número de procesadores, configuración de NUMA, etc. en el Registro de errores de SQL Server.
-
Para encontrar la versión de SQL Server, compruebe lo siguiente:
Cómo determinar la versión y la edición de SQL Server y sus componentes
Referencias
-
Cómo obtener el service pack más reciente para SQL Server 2012
-
Dónde encontrar información acerca de la más reciente de SQL Server genera
-
Recursos de la Comunidad de SQL Server en las actualizaciones importantes para SQL Server