Supervisión del rendimiento de una base de datos

Completado

Una parte importante de las técnicas de solución de problemas que usaría para solucionar problemas de rendimiento de la base de datos sigue siendo la misma en Azure SQL.

Todas las herramientas que se usan normalmente para la supervisión y la solución de problemas de SQL Server también se aplican a SQL Server ejecutándose en una máquina virtual de Azure, incluidas herramientas como el Monitor de rendimiento. Sin embargo, debido a la naturaleza de las plataformas como servicio (PaaS), Azure SQL Database y Azure SQL Managed Instance proporcionan un conjunto diferente de herramientas. A continuación, exploraremos las herramientas específicas para las ofertas de PaaS de Azure y sus funcionalidades.

Comparación de los resultados de rendimiento con la línea base

Normalmente, el proceso de establecimiento de una línea base comienza bien de antemano de la migración real de la base de datos. Esto implica recopilar un conjunto completo de medidas de datos que reflejen el rendimiento estándar de la base de datos en su entorno original. Estas medidas pueden incluir, entre otras, el uso de CPU, los tiempos de respuesta, las tasas de transacción y las tasas de error.

Esta línea de base sirve como punto de referencia con el que se puede comparar el rendimiento de la base de datos migrada. Sin embargo, la evaluación o comparación de estos datos de línea base con las métricas de rendimiento de la base de datos migrada solo tiene lugar una vez completada la migración.

Después de la migración, se supervisa y mide el rendimiento del nuevo entorno de base de datos. Estas métricas posteriores a la migración se comparan con la línea de base anterior a la migración para identificar las discrepancias o problemas de rendimiento. Esta comparación ayuda a comprender si la migración ha tenido efectos adversos en el rendimiento de la base de datos o si hay áreas que requieran optimización para mejorar el rendimiento.

Ajuste automático

El ajuste automático es una característica que aprende continuamente de la carga de trabajo, identifica posibles problemas y mejoras, y ofrece recomendaciones basadas en los datos de Almacén de consultas. Se adapta a los cambios en los planes de ejecución causados por modificaciones del esquema o el índice, o actualizaciones de datos.

Las recomendaciones de ajuste se pueden aplicar manualmente mediante Azure Portal, o bien puede dejar que se apliquen de forma autónoma. En Azure SQL Database, también puede mejorar el rendimiento de las consultas optimizando los índices.

Corrección automática del plan

Con la ayuda del Almacén de consultas, el motor de base de datos puede detectar cuándo se han devuelto los planes de ejecución de consultas en el rendimiento. Aunque puede identificar manualmente un plan con regresión mediante la interfaz de usuario, el almacén de consultas también proporciona una opción de notificación automática.

Screenshot of the Query Store view for regressed plan correction.

En el ejemplo dado, aparece una marca de verificación junto al Plan ID 1, lo que indica que se fuerza el plan.

Una vez que habilite el ajuste automático, el motor de base de datos aplicará automáticamente cualquier plan de ejecución de consultas sugerido en las condiciones siguientes:

  • La tasa de errores del plan anterior supera la del plan recomendado
  • La ganancia estimada de CPU sobrepasa los 10 segundos
  • El plan forzado supera el anterior

Cuando se produce el forzado automático del plan, el motor de base de datos aplica el último plan correcto y supervisa su rendimiento. Si el plan forzado no funciona mejor que el plan anterior, entonces no será forzado y se compila un nuevo plan. Si supera el plan anterior, permanece forzado hasta que se vuelva a compilar.

Use la siguiente consulta de T-SQL para habilitar la corrección automática del plan.

ALTER DATABASE [WideWorldImporters] SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON);

Puede ver las recomendaciones de ajuste automático a través de la vista de administración dinámica, sys.dm_db_tuning_recommendations. Esta DMV proporciona detalles, tipos y estados de recomendación. Para confirmar que el ajuste automático está habilitado para una base de datos, compruebe la vista sys.database_automatic_tuning_options.

El ajuste automático con Azure SQL Managed Instance solo admite FORCE LAST GOOD PLAN.

Para habilitar las notificaciones para el ajuste automático, vea Notificaciones por correo electrónico para el ajuste automático

Administración automática de índices

Azure SQL Database admite el ajuste automático de índices. Con el tiempo, la base de datos irá obteniendo información sobre las cargas de trabajo existentes y proporcionará recomendaciones para agregar o quitar índices, con el fin de proporcionar un mejor rendimiento. Al igual que forzar planes de consulta mejorados, la base de datos se puede configurar para permitir la creación o eliminación automática de índices según el rendimiento del índice existente.

Screenshot of Automatic tuning Options for Azure SQL Database.

Como alternativa, use la consulta siguiente para ver las características de ajuste automático habilitadas en la base de datos.

SELECT name,
    desired_state_desc,
    actual_state_desc,
    reason_desc
FROM sys.database_automatic_tuning_options

La creación de índices consume muchos recursos y su creación correcta es fundamental para garantizar que no haya ningún efecto negativo en las cargas de trabajo.

Azure SQL Database supervisa los recursos necesarios para implementar nuevos índices automáticamente para evitar la degradación del rendimiento. La acción de optimización se retrasa hasta que los recursos estén disponibles, por ejemplo, cuando los recursos necesarios para las cargas de trabajo existentes impiden la creación de índices.

Explorar información de rendimiento de consultas

La fase inicial de cualquier tarea de optimización del rendimiento de la base de datos implica identificar las consultas que consumen más recursos. En versiones anteriores de SQL Server, esto requería un seguimiento extenso y un conjunto de scripts SQL intrincados, lo que hace que el proceso de recopilación de datos sea laborioso.

Identificación de consultas problemáticas

Azure SQL Database ofrece una herramienta denominada Información de rendimiento de consultas, que permite al administrador identificar rápidamente las consultas costosas. Lo encuentra en la hoja principal de Azure SQL Database, en la sección Rendimiento inteligente.

Información de rendimiento de consultas en Azure SQL Database proporciona tres opciones de filtrado: para consultas de larga duración, consultas que consumen más recursos (que es el valor predeterminado) o un filtro personalizado. Muestra las cinco primeras consultas ordenadas por un recurso elegido, como CPU, E/S de datos o E/S de registro. Puede profundizar en las consultas individuales haciendo clic en la fila de la cuadrícula inferior. Cada fila se marca con un color distinto que coincide con el color del gráfico de barras.

Screenshot of Query Performance Insights dashboard from Azure portal.

La pestaña personalizada ofrece más flexibilidad que las demás opciones. Permite un examen más personalizado de los datos de rendimiento con varios menús desplegables que influyen en la visualización de datos. Las métricas clave incluyen CPU, E/S de registro, E/S de datos y memoria, que son aspectos de rendimiento limitados por el nivel de servicio y los recursos de proceso de Azure SQL Database.

Screenshot of a custom dashboard in Query Performance Insight.

Si profundizamos en una consulta individual, podremos ver el identificador de la consulta y la propia consulta, así como el tipo de agregación de consulta y el período de tiempo asociado.

Screenshot of the details of Query ID 3204 in Query Performance Insight.

Aunque Información de rendimiento de consultas no muestra el plan de ejecución de la consulta, puede identificar rápidamente esa consulta y usar la información para extraer el plan del Almacén de consultas en la base de datos.

Alertas

Puede configurar alertas de rendimiento para las bases de datos en Azure SQL Database mediante Azure Portal. Estas alertas pueden notificarle por correo electrónico o llamar a un webhook cuando una determinada métrica (como el tamaño de la base de datos o el uso de CPU) alcanza un umbral.

El proceso de configuración de alertas es similar entre SQL Database y SQL Managed Instance. Para configurar alertas de rendimiento para Azure SQL Database, vaya a la sección Supervisión y seleccione Alertas. Desde allí, debe establecer una nueva regla de alertas, definir una condición y crear un grupo de acciones.

Para obtener más información sobre las alertas de Azure SQL Managed Instance, puede visitar Creación de alertas para Azure SQL Managed Instance mediante Azure Portal. Para configurar las alertas de Azure SQL Database, consulte Creación de alertas para Azure SQL Database y Azure Synapse Analytics mediante Azure Portal.

Azure SQL Insights

Azure SQL Insights mejora la experiencia de supervisión al proporcionar visualizaciones interactivas y listas para usar. Puede personalizar la recopilación y frecuencia de la telemetría y combinar datos de varios orígenes en una sola experiencia de supervisión. También conserva un conjunto de métricas a lo largo del tiempo, lo que le permite investigar los problemas de rendimiento que haya encontrado en el pasado.

Importante

Se recomienda configurar Azure SQL Insights solo después de que la base de datos migrada se haya integrado completamente en producción. Esto evita que la herramienta capture datos ruidosos durante la fase de migración y pruebas.

Para empezar a trabajar con SQL Insights, necesita una máquina virtual dedicada que supervise y recopile datos de forma remota desde los servidores de SQL. Esta máquina virtual dedicada debe tener instalados los siguientes componentes:

  • Agente de Azure Monitor
  • Extensión Insights de carga de trabajo

Además, se requieren los siguientes componentes para configurar SQL Insights.

Perfil de supervisión: servidores de grupo, instancias o bases de datos que se van a supervisar.

Área de trabajo de Log Analytics: lugar donde se enviarán los datos de supervisión de SQL.

Configuración de recopilación: puede personalizar la recopilación de datos para el perfil. La configuración predeterminada cubre la mayoría de los escenarios de supervisión y, normalmente, no es necesario modificarla.

Eventos extendidos

La herramienta Eventos extendidos es un sistema de supervisión sólido que captura la actividad detallada del servidor y de la base de datos. Los filtros se pueden aplicar para reducir la sobrecarga de recopilación de datos y centrarse en problemas de rendimiento específicos. Todas las ofertas de Azure SQL admiten eventos extendidos.

Aunque la configuración de eventos extendidos es similar en SQL Server, Azure SQL Database y Azure SQL Managed Instance, este módulo se centra en sus diferencias, no en enseñar el proceso de configuración.

Estas son algunas diferencias clave al configurar eventos extendidos en Azure SQL Database:

  • Transact-SQL: al ejecutar el comando CREATE EVENT SESSION en SQL Server, se usa la cláusula ON SERVER. Pero en Azure SQL Database se usa la cláusula ON DATABASE en su lugar. La cláusula ON DATABASE también se aplica a los comandos de Transact-SQL ALTER EVENT SESSION y DROP EVENT SESSION . Azure SQL Database admite solo sesiones con ámbito de base de datos.

  • Sesiones con ámbito de base de datos: los eventos extendidos se basan en el modelo de aislamiento de inquilino único en Azure SQL Database. Una sesión de eventos en una base de datos no puede tener acceso a datos o eventos desde otra base de datos. No se puede emitir una instrucción CREATE EVENT SESSION en el contexto de la base de datos maestra¹.

  • Almacenamiento: dado que no tiene acceso al sistema de archivos del servidor donde reside la base de datos en Azure SQL Database, puede configurar un destino de cuenta de almacenamiento para almacenar las sesiones de eventos extendidas.