sql >> Base de Datos >  >> RDS >> Sqlserver

Ventajas de rendimiento de SQL Server 2016 Enterprise Edition

El 16 de noviembre de 2016, Microsoft anunció algunos cambios muy significativos para SQL Server 2016 Standard Edition, que se implementaron en SQL Server 2016 Service Pack 1 (compilación 13.0.4001.0). Muchas funciones muy útiles relacionadas con la programabilidad que anteriormente solo estaban disponibles en Enterprise Edition ahora estarán disponibles en Standard Edition (y también en Web Edition e incluso Express Edition).

Una vez que tenga una aplicación de base de datos que use SQL Server 2016 Standard Edition Service Pack 1 (o incluso una edición inferior), puede realizar una actualización de edición a Enterprise Edition para obtener aún más escalabilidad y rendimiento, aprovechando los límites de licencia más altos para sockets. , núcleos y memoria en Enterprise Edition, como se detalla aquí.

También obtendrá muchos otros beneficios de rendimiento intrínsecos que están presentes en Enterprise Edition, junto con múltiples mejoras de capacidad de administración que hacen que su vida sea mucho más fácil como DBA.

Índices de almacén de columnas

Si utiliza índices de almacén de columnas, obtiene automáticamente los siguientes beneficios de rendimiento cuando utiliza Enterprise Edition:

  • Desplazamiento agregado: Esta característica de rendimiento a menudo brinda una ganancia de rendimiento de consulta de 2X-4X al enviar agregados calificados al nodo SCAN, lo que reduce la cantidad de filas que salen de ese iterador.
  • Creación/reconstrucción de índice: Enterprise Edition puede crear/reconstruir índices de almacén de columnas con varios núcleos de procesador, mientras que Standard Edition solo usa un núcleo de procesador. Esto tiene un efecto bastante significativo en los tiempos transcurridos para estas operaciones, dependiendo de su hardware.
  • Agregados locales: Enterprise Edition puede usar agregaciones locales para filtrar la cantidad de filas que pasan de un nodo SCAN, lo que reduce la cantidad de trabajo que deben realizar los nodos de consulta posteriores. Puede confirmarlo buscando el atributo "ActualLocallyAggregatedRows" en el XML del plan de ejecución de la consulta.
  • Optimizaciones de datos múltiples de instrucción única (SIMD): Esta característica utiliza un conjunto de instrucciones de hardware que son capaces de procesar una serie de datos en una sola instrucción, lo que acelera drásticamente las operaciones agregadas. Estas instrucciones de hardware están presentes en todos los procesadores modernos (que son compatibles con AVX), pero solo se usan en Enterprise Edition.
  • Inserción de predicado de cadena: Esta función de rendimiento puede mejorar el rendimiento de las consultas que utilizan predicado(s) en columnas de cadena al enviar estos predicados al nodo SCAN. Esto puede reducir en gran medida la cantidad de trabajo que deben realizar los nodos posteriores.
  • Grado de paralelismo: Las consultas en modo por lotes están limitadas a MAXDOP =2 en Standard Edition. Enterprise Edition puede usar todos los núcleos que están presentes para la instancia. Esto puede ser muy significativo en consultas más grandes en hardware de servidor moderno y típico.
  • Límites de memoria: El grupo de objetos de Columnstore está limitado a 32 GB por instancia en Standard Edition. Enterprise Edition no tiene ninguna limitación de memoria para el grupo de objetos de Columnstore.

Para probar estas afirmaciones de rendimiento, realicé algunas pruebas bastante simples en la base de datos Microsoft ContosoRetailDW en mi estación de trabajo Intel Core i7-6700K. Tengo dos instancias con nombre de SQL Server 2016 SP1 instaladas, una con Standard Edition y la otra con Developer Edition (que es equivalente a Enterprise Edition).

Todas las configuraciones y propiedades a nivel de instancia y de base de datos son idénticas entre las dos instancias, y las ubicaciones de los archivos de base de datos tempdb y de usuario están en directorios separados en el mismo dispositivo de almacenamiento flash independiente para cada instancia. El nivel de compatibilidad de la base de datos se cambió a 130 en ambos casos, y la configuración y el hardware subyacentes de Windows son los mismos para ambas instancias. La única diferencia aquí es la edición de cada instancia.

La primera prueba es una consulta simple (adaptada de Niko Neugebauer) que permite que SQL Server 2016 use pushdown agregado en la tabla FactOnlineSales. Los resultados se muestran en la Tabla 1.

Edición Tiempo transcurrido (ms)
Edición estándar 30
Edición para desarrolladores 1
Diferencia horaria 29
% de mejora 96,7 %

Tabla 1:Comparación de pushdown agregado

La siguiente prueba es medir el tiempo que se tarda en crear un índice de almacén de columnas agrupado en la tabla FactOnlineSales de 12,6 millones de filas. Los resultados se muestran en la Tabla 2.

Edición Tiempo transcurrido (ms)
Edición estándar 42,197
Edición para desarrolladores 14.384
Diferencia horaria 27.813
% de mejora 65,9 %

Tabla 2:Creación de una comparación de índices de almacén de columnas agrupados

La siguiente prueba es medir el tiempo que lleva reconstruir un índice de almacén de columnas agrupado en la misma tabla FactOnlineSales. Los resultados se muestran en la Tabla 3.

Edición Tiempo transcurrido (ms)
Edición estándar 33,105
Edición para desarrolladores 11.460
Diferencia horaria 21.645
% de mejora 65,4 %

Tabla 3:Reconstrucción de la comparación de índices de almacén de columnas agrupados

La siguiente prueba es otra consulta simple que permite que SQL Server 2016 use la agregación local en la tabla FactOnlineSales. Los resultados se muestran en la Tabla 4.

Edición Tiempo transcurrido (ms)
Edición estándar 122
Edición para desarrolladores 83
Diferencia horaria 39
% de mejora 32,0 %

Tabla 4:Comparación de agregación local

La siguiente prueba es otra consulta simple que permite que SQL Server 2016 use la inserción de predicado de cadena en las tablas FactOnlineSales y DimPromotion. Los resultados se muestran en la Tabla 5.

Edición Tiempo transcurrido (ms)
Edición estándar 2683
Edición para desarrolladores 1,221
Diferencia horaria 1466
% de mejora 54,6 %

Tabla 5:Comparación de inserción de predicado de cadena

Estos son solo algunos ejemplos simples de las ventajas de rendimiento integradas para los índices de almacén de columnas en SQL Server 2016 Enterprise Edition en comparación con SQL Server 2016 Standard Edition en el mismo hardware. Si realmente desea sumergirse en los índices de Columnstore (que pueden ser una característica muy efectiva para algunas cargas de trabajo), debe marcar y leer la larga serie de publicaciones de Niko Neugebauer en columnstore.net.

Rendimiento DBCC CHECKDB

Otra mejora en el rendimiento de la capacidad de administración que está presente en SQL Server 2016 Enterprise Edition es el rendimiento de DBCC CHECKDB. En Standard Edition, DBCC CHECKDB solo usa un núcleo de procesador, mientras que puede usar todos los núcleos disponibles en Enterprise Edition. Este comportamiento no ha cambiado con respecto a las versiones anteriores de SQL Server. SQL Server 2016 le permite restringir la cantidad de núcleos que DBCC CHECKDB puede usar con una nueva opción CON (MAXDOP =x).

Ejecutar DBCC CHECKDB con la opción CON PHYSICAL_ONLY en una base de datos un poco más grande (alrededor de 38 GB) que tengo, arrojó los resultados que se muestran en la Tabla 6.

Edición Tiempo transcurrido (ms)
Edición estándar 58.492
Edición para desarrolladores 24.897
Diferencia horaria 33.595
% de mejora 57,4 %

Tabla 6:Comparación DBCC CHECKDB CON PHYSICAL_ONLY

Ejecutar un DBCC CHECKDB estándar en la misma base de datos arrojó los resultados que se muestran en la Tabla 7.

Edición Tiempo transcurrido (ms)
Edición estándar 435.039
Edición para desarrolladores 119.767
Diferencia horaria 315,272
% de mejora 72,5 %

Tabla 7:Comparación DBCC CHECKDB

Un factor muy importante en el rendimiento de DBCC CHECKDB es el rendimiento de lectura secuencial de todos los LUN donde se encuentran los archivos de datos de la base de datos. Puede verificar esto fácilmente ejecutando un comando BACKUP DATABASE en un dispositivo NUL (asegurándose de usar las opciones COPY_ONLY y NO_COMPRESSION). Esto le mostrará su rendimiento efectivo de lectura secuencial, como se muestra en este ejemplo de mi estación de trabajo:

BACKUP DATABASE procesó con éxito 5048514 páginas en 16,115 segundos (2447,502 MB/seg).

Tenga en cuenta que todas estas pruebas se realizaron en un solo procesador de escritorio de cuatro núcleos. Un servidor de múltiples sockets con muchos más núcleos de procesador totales mostrará una mejora aún mayor en el rendimiento en muchas de estas pruebas.

El objetivo de todo esto es mostrar algunos ejemplos tangibles de las mejoras de rendimiento que puede ver, simplemente actualizando de SQL Server 2016 Standard Edition SP1 a SQL Server 2016 Enterprise Edition SP1, en el mismo hardware, sin realizar cambios en la base de datos ni en la aplicación. . Esta lista no es exhaustiva, ya que también hay muchos otros beneficios.