Microsoft ha anunciado recientemente una nueva característica increíble:ajuste automático en Azure SQL Database. Para ser honesto, estoy muy impresionado con esta función porque los ingenieros de Microsoft han utilizado de forma sofisticada la inteligencia artificial en el ajuste del rendimiento de SQL Azure. El objetivo es monitorear la base de datos Azure SQL y enviar estas observaciones al servicio de inteligencia incorporado que genera algunas recomendaciones. Se pueden aplicar en horas valle. Esta función también ha simplificado el trabajo de los administradores de bases de datos; ahora no tienen que preocuparse por el rendimiento de la base de datos de SQL Azure.
Hay un punto clave sobre el ajuste automático de SQL Azure en la documentación de MSDN "El ajuste automático aprende horizontalmente de todas las bases de datos en Azure a través de la inteligencia artificial y mejora dinámicamente sus acciones de ajuste". Significa que el algoritmo de inteligencia artificial aprende una gran experiencia de diferentes bases de datos de SQL Azure. Por esta razón, estas recomendaciones serán confiables. La función de sintonización automática también puede revertir las recomendaciones y corregirse a sí misma.
Otra opción interesante de esta función son las notificaciones. Microsoft está aumentando la confianza en esta función al decir que está implementada en algunas empresas. Tal vez, este enfoque puede ser un poco utópico, pero en el futuro la inteligencia artificial tendrá muchas responsabilidades de los administradores de bases de datos. Por lo tanto, se reducirá la cantidad de tareas para los administradores de bases de datos.
Para probar esta función, creé dos tablas en Azure SQL y las rellené con algunos datos. Después de generar estos datos de prueba, ejecuté muchas consultas que necesitaban los mismos índices no agrupados. Cuando examiné el plan de ejecución de consultas estimado, descubrí que sugería un índice no agrupado. Aproximadamente, después de 30 horas, el ajuste automático de Azure SQL generó una recomendación para crear un índice. Para este tiempo de espera, Microsoft señala que "Azure SQL Database necesita monitorear las actividades al menos durante un día para identificar algunas recomendaciones". Este índice de recomendación de ajuste es el mismo que el índice faltante. Cuando el ajuste automático intentó ejecutar el script, hubo un error debido al espacio limitado en el disco.
/* Missing Index Details from SQLQuery1.sql - xxxx.database.windows.net.Adventureworks (esat.erkec) The Query Processor estimates that implementing the following index could improve the query cost by 99.6269%. */ /* USE [Adventureworks] GO CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>] ON [dbo].[Salesd] ([SalesOrderID]) GO */
Las opciones de ajuste automático son las siguientes:
- Crear índice que identifica la creación automática de índices que pueden afectar el rendimiento.
- Índice de caída que identifica índices no utilizados o redundantes.
- Forzar último plan bueno que define planes de consultas SQL peores que los anteriores. Esta característica se refiere a la corrección automática del plan en SQL Server 2017.
Cómo habilitar el ajuste automático de Azure SQL
Las consultas de Azure Portal o T-SQL permiten habilitar opciones de ajuste automático. Esta función puede habilitar el ajuste automático a nivel de servidor o de base de datos al mismo tiempo. El nivel de la base de datos puede heredar estas opciones del nivel del servidor.
Ahora, nos conectaremos a Azure Portal y encontraremos servidores SQL.
Luego, encuentra las opciones de sintonización automática.
En esta captura de pantalla, podemos cambiar y aplicar opciones de ajuste automático a nivel de servidor y en la configuración predeterminada. Todas las bases de datos se heredan del nivel del servidor. Sin embargo, también podemos cambiar esta opción a nivel de base de datos.
La opción Estado actual define el estado actual de la opción de sintonización automática. Microsoft ofrece administrar esta función a nivel de servidor porque su configuración se puede aplicar a todas las bases de datos.
Ahora, veremos las opciones de ajuste automático a nivel de base de datos. Podemos encontrar estas opciones en bases de datos SQL.
Como puede ver, podemos establecer opciones de ajuste automático para una base de datos individual y cambiar las opciones de herencia.
La captura de pantalla anterior identifica las siguientes opciones:
- El estado del plan de fuerza es "ON" y se hereda del nivel del servidor cuyo estado es "ON".
- El estado de creación de índice es "DESACTIVADO" y se hereda del nivel del servidor. Su estado es "APAGADO".
- El estado de Drop Index es "ON" y esta opción está configurada solo para esta base de datos. El nivel del servidor no es importante para esta configuración.
Podemos habilitar el ajuste automático a través de T-SQL:
ALTER DATABASE current SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON, CREATE_INDEX = DEFAULT, DROP_INDEX)
En este paso, veremos las recomendaciones de ajuste automático ubicadas debajo del menú de SQL Server.
Además, las recomendaciones de sintonización automática se pueden encontrar debajo del menú de la base de datos.
Las recomendaciones de ajuste tienen diferentes estados:
- Pendiente: Se ha recibido el comando Aplicar recomendación y está programado para su ejecución.
- Ejecutando: La recomendación se está aplicando.
- Verificando: La recomendación se aplicó con éxito y el servicio está midiendo los beneficios.
- Éxito: La recomendación se aplicó con éxito y se midieron los beneficios.
- Error: Se produjo un error durante el proceso de aplicación de la recomendación. Esto puede ser un problema transitorio o un cambio de esquema en la tabla y el script ya no es válido.
- Reversión: La recomendación se aplicó, pero se consideró que no cumplió y se revirtió automáticamente.
- Revertido: La recomendación fue revertida.
Cuando el ajuste automático crea una recomendación que se ubicará debajo de la pestaña Recomendaciones, el estado será pendiente. Cuando el estado de la recomendación de sintonización es ejecución, progreso, éxito o error, se mostrará en la pestaña Historial de sintonización. Al mismo tiempo, sys.dm_db_tuning_recommendations puede devolver información sobre la recomendación de sintonización automática.
SELECT name, JSON_VALUE(state, '$.currentValue') as script, JSON_VALUE(details, '$.implementationDetails.script') as script, details.* FROM sys.dm_db_tuning_recommendations CROSS APPLY OPENJSON(details, '$.createIndexDetails') WITH ( indexName VARCHAR(100) '$.indexName', indexType VARCHAR(100) '$.indexType', table_name VARCHAR(100) '$.table') as details
Cuando hacemos clic en Recomendación, podemos encontrar algunos detalles sobre la recomendación de ajuste.
Podemos obtener mucha información útil sobre recomendaciones de ajuste y generar un script de esta función.
Los detalles que devolverá el script son los siguientes:
- Impacto define un nivel de prioridad de recomendación de ajuste.
- Se necesita espacio en disco define el consumo de almacenamiento.
- Tipo de índice define qué tipo de índice creará.
Conclusiones
En mi opinión, el ajuste automático de SQL Azure es una característica de nueva generación porque Microsoft está comenzando a usar algoritmos de inteligencia artificial en la recomendación de ajuste. Al mismo tiempo, esta función puede dar lugar a las siguientes preguntas:
- ¿Cuándo debo tener esta recomendación de ajuste?
- ¿Es útil esta recomendación de ajuste? Si no es útil, ¿cuándo debo revertir esta recomendación de ajuste?
Como resultado, el ajuste automático de SQL Azure ofrece un enfoque futurista.
Referencias
Ajuste automático en Azure SQL Database
Ajuste del rendimiento en Azure SQL Database
La inteligencia artificial ajusta las bases de datos Azure SQL