sql >> Base de Datos >  >> RDS >> Database

Opciones de ajuste del rendimiento de Azure SQL Database

Azure SQL Database es la oferta de base de datos como servicio de Microsoft que ofrece una enorme cantidad de flexibilidad y seguridad y, como parte de la plataforma como servicio de Microsoft, puede aprovechar funciones adicionales. Dado que Azure SQL Database tiene un ámbito de base de datos, existen grandes diferencias en lo que respecta a la optimización del rendimiento.

Ajuste de la instancia

Muchos elementos de nivel de instancia que solía configurar en instalaciones completas están fuera de los límites. Algunos de estos elementos incluyen:

  • Configuración de la memoria mínima y máxima del servidor
  • Habilitación de la optimización para cargas de trabajo ad hoc
  • Cambiar el umbral de costo para el paralelismo
  • Cambiar el grado máximo de paralelismo a nivel de instancia
  • Optimización de tempdb con varios archivos de datos
  • Marcas de rastreo

No se moleste demasiado por algunos de estos. La declaración ALTER DATABASE SCOPED CONFIGURATION permite bastantes ajustes de configuración en el nivel de base de datos individual. Esto se introdujo con Azure SQL Database y en SQL Server a partir de SQL Server 2016. Algunas de estas configuraciones incluyen:

  • Borrar caché de procedimientos
  • Establecer el MAXDOP en un valor distinto de cero
  • Establecer el modelo de estimación de cardinalidad del optimizador de consultas
  • Habilitar o deshabilitar revisiones de optimización de consultas
  • Habilitar o deshabilitar el rastreo de parámetros
  • Habilitar o deshabilitar la memoria caché de identidad
  • Habilite o deshabilite un código auxiliar del plan compilado para que se almacene en caché cuando se compila un lote por primera vez.
  • Habilite o deshabilite la recopilación de estadísticas de ejecución para módulos T-SQL compilados de forma nativa.
  • Habilite o deshabilite las opciones en línea de forma predeterminada para declaraciones DDL que admitan la sintaxis ONLINE=ON/OFF.
  • Habilite o deshabilite las opciones reanudables de forma predeterminada para declaraciones DDL que admitan la sintaxis RESUMABLE=ON/OFF.
  • Habilite o deshabilite la funcionalidad de colocación automática de tablas temporales globales

Como puede ver en la lista de configuraciones con ámbito, tiene mucho control y precisión para ajustar comportamientos específicos para bases de datos individuales. Para algunos clientes, las limitaciones para el control a nivel de instancia pueden tener un impacto negativo, mientras que otros lo verán como un beneficio.

Para empresas que tienen una base de datos por cliente, que necesitan un aislamiento completo, está integrado en Azure SQL Database. Para aquellos que necesitan las capacidades a nivel de instancia de SQL Server pero les gustaría aprovechar la oferta de PaaS de Microsoft, existe Azure SQL Managed Instance, que tiene un ámbito de instancia. El objetivo allí es tener un 100 % de compatibilidad de superficie con SQL Server; por lo tanto, puede establecer la memoria mínima y máxima del servidor, habilitar la optimización para cargas de trabajo ad hoc y cambiar tanto MAXDOP como el umbral de costo para el paralelismo. Tempdb en una Instancia administrada ya tiene varios archivos, pero puede agregar más y aumentar el tamaño predeterminado. En muchos sentidos, realmente se siente como la instalación completa de SQL Server.

Ajuste de consultas

Otra diferencia entre Azure SQL Database y SQL Server es que Query Store está habilitado de forma predeterminada en Azure SQL Database. Puede desactivar Query Store, pero luego limita las herramientas de rendimiento inteligente en Azure Portal que lo usan. Query Store es una función que proporciona información sobre el rendimiento de las consultas y la elección del plan. Query Store también captura un historial de consultas, planes y estadísticas de tiempo de ejecución para que pueda revisar lo que está sucediendo. ¿Quiere saber qué consulta tiene el mayor tiempo de recompilación, tiempo de ejecución, número de ejecuciones, uso de CPU, uso de memoria, la mayor cantidad de lecturas/escrituras físicas y más? Query Store tiene esa información. Para SQL Server, debe habilitar esta función por base de datos. Si es nuevo en Query Store, mi colega Erin Stellato tiene un curso de tres horas sobre Pluralsight que lo ayudará a comenzar.

La categoría de herramientas de rendimiento inteligente tiene cuatro funciones. En primer lugar, la descripción general del rendimiento proporciona un resumen del rendimiento general de su base de datos al enumerar las 5 consultas principales por consumo de CPU, cualquier recomendación de ajuste automático, actividad de ajuste y configuración de ajuste automático actual. Esta página de destino le brinda un vistazo rápido a su desempeño.

En segundo lugar, la opción de recomendaciones de rendimiento mostrará una lista de las recomendaciones actuales para la creación de índices o si se debe descartar algún índice. Si se han completado acciones recientes, también verá el historial.

En tercer lugar, Query Performance Insight es donde puede encontrar una visión más profunda de su consumo de recursos al ver las 5 consultas principales por CPU, E/S de datos o E/S de registro. Las 5 consultas principales están codificadas por colores para que pueda ver rápidamente el porcentaje del consumo total visualmente. Puede hacer clic en la identificación de la consulta para obtener más detalles, incluido el texto SQL. También hay una pestaña de consultas de larga duración. Me gusta mucho que Microsoft haya incluido una característica como esta en Azure Portal sin costo alguno. Brinda valor al brindarles a los clientes un portal para ver las consultas más infractoras. Lo que encuentro desafiante aquí es tener una forma de ver una línea de base general para comparar día a día, semana a semana y el mes anterior. Sin embargo, para un análisis y una descripción general rápidos, Query Performance Insight es útil.

La última característica de esta categoría es la sintonización automática. Aquí es donde puede configurar el plan de fuerza, crear el índice y eliminar la configuración del índice. Puede activarlo, desactivarlo o elegir heredar del servidor. Force plan permite a Azure elegir lo que cree que sería el mejor de los planes de ejecución para las consultas regresivas. Esta función también existe en SQL Server 2017 Enterprise Edition como corrección automática del plan. Algunos DBA se ponen nerviosos cuando escuchan acerca de las funciones de ajuste automático, ya que temen que pueda reemplazar la necesidad de DBA en el futuro. Siempre me gusta hacer la pregunta:"¿Cuánto tiempo cada día dedica de forma proactiva a ajustar las consultas?". La respuesta abrumadora es que las personas en realidad pueden pasar muy poco tiempo ajustando proactivamente, y la mayoría responde que la única vez que realmente "sintonizan" es después de un lanzamiento de código o cuando los usuarios comienzan a quejarse.

Además de las herramientas integradas y del valor de usar Query Store, los DMV también están disponibles. Glenn Berry tiene una colección completa de scripts solo para Azure SQL Database que puede utilizar. Un DMV en particular que quiero mencionar es sys.dm_os_wait_stats. Esto se extraerá del nivel del servidor, por lo que si realmente desea ver las estadísticas de espera para el nivel de la base de datos, deberá usar sys.dm_db_wait_stats en su lugar.

Hardware:escalabilidad

Otra área a tener en cuenta al observar el rendimiento con Azure SQL Database es el hardware subyacente. Azure SQL Database tiene un precio por unidades de transacción de base de datos (DTU) y núcleos virtuales. Las DTU son una medida combinada de CPU, memoria y E/S, y vienen en tres niveles; Básico, Estándar y Premium. Basic es solo 5 DTU, Standard varía de 10 a 3000 DTU y Premium varía de 125 a 4000 DTU. Para los niveles basados ​​en núcleos virtuales, tenemos de uso general y críticos para la empresa, que van de 1 a 80 núcleos virtuales.

En el modelo DTU, se debe considerar Basic para el desarrollo y las pruebas. Solo tiene una retención de copia de seguridad de 7 días, por lo que no lo consideraría viable para ningún dato de producción. El estándar es bueno para una demanda de CPU baja, media y alta con una demanda de E/S de moderada a baja. El nivel básico y estándar ofrece 2,5 IOPS por DTU con 5 ms (lectura), 10 ms (escritura). El nivel Premium es para demanda de CPU media a alta y E/S alta que ofrece 48 IOPS por DTU con 2 ms (lectura/escritura). El nivel Premium tiene un almacenamiento mucho más rápido que el estándar. En el modelo vCore, tiene procesadores Gen4 que ofrecen 7 GB de RAM por núcleo físico y procesadores Gen 5 que ofrecen 5,1 GB de RAM por núcleo lógico. Desde una perspectiva de E/S, el uso general ofrece 500 IOPS por núcleo virtual con un máximo de 7000. Business Critical ofrece 5000 IOPS por núcleo con un máximo de 200 000.

Resumen

Azure SQL Database es excelente para aquellos sistemas que necesitan el aislamiento de la base de datos, mientras que Azure SQL Managed Instance es excelente para aquellos entornos en los que necesita compatibilidad a nivel de instancia (compatibilidad con consultas entre bases de datos). Cuando necesite ajustar Azure SQL Database, debe hacer cosas en el nivel de la base de datos, ya que las opciones de nivel de instancia están fuera de los límites, por lo que los valores de configuración del ámbito de la base de datos son sus opciones de ajuste. Con la solución de problemas de consultas de bajo rendimiento, tiene algunas herramientas integradas que ayudan, incluido Query Store, y la mayoría de sus scripts de ajuste regulares funcionarán. Es posible que aún necesite más, como líneas de base, más datos históricos y la capacidad de crear condiciones de asesoramiento para ayudarlo a administrar sus cargas de trabajo. Aquí es donde las poderosas soluciones de monitoreo como SentryOne DB Sentry pueden ayudar.

Cuando todo lo demás falla, o su carga de trabajo simplemente ha aumentado más allá de sus recursos de hardware actuales, escale a un nivel superior.