Automatic Tuning, Mantenimiento de Índices y MAXDOP

Explica Automatic Tuning, mantenimiento de índices, MAXDOP e Intelligent Query Processing para optimizar el rendimiento de SQL.

El examen DP-300 evalúa su capacidad para elegir la herramienta correcta en el momento adecuado. ¿Cuándo conviene usar REBUILD en lugar de REORGANIZE? ¿Cuándo es necesario actualizar estadísticas manualmente? ¿En qué nivel exacto debe configurarse MAXDOP? Estas decisiones parecen difíciles cuando todas las opciones suenan razonables, pero una vez que se entiende para qué existe cada función, los escenarios desconocidos empiezan a resolverse de forma natural.

Fragmentación de Índices — Reorganizar una Biblioteca vs Actualizar un Mapa

Imagine una biblioteca que lleva décadas en uso. Al principio los libros estaban ordenados por número, pero con el tiempo las devoluciones y los préstamos dejaron huecos y los libros perdieron su lugar. Ahora el bibliotecario recorre varios pasillos para encontrar un solo título. Los índices de una base de datos sufren exactamente lo mismo tras repetidas operaciones INSERT, UPDATE y DELETE.

La fragmentación se mide con . Los umbrales oficiales de Microsoft dividen el tratamiento en dos bandas. Cuando la fragmentación está entre el 5% y el 30%, se usa : es como actualizar las notas de ubicación sin mover los libros. Las páginas se reorganizan en su lugar y la operación siempre se ejecuta en línea, sin bloquear otras consultas. Cuando la fragmentación supera el 30%, se usa : equivale a vaciar los estantes y volver a ordenar todo desde cero. De forma predeterminada, se ejecuta fuera de línea con bloqueo de tabla, pero agregar permite ejecutarlo sin bloquear consultas concurrentes.

La diferencia más importante: actualiza automáticamente las estadísticas con un análisis completo durante la recreación, mientras que no toca las estadísticas. Si necesita eliminar la fragmentación y actualizar las estadísticas en un solo paso, es la única opción disponible.

 

Estadísticas y Planes de Ejecución — Un Mapa Desactualizado Lleva al Error

Navegar con un GPS de hace tres años puede enviarlo por carreteras que ya no existen. El optimizador de consultas corre el mismo riesgo. Las estadísticas son histogramas que describen la distribución de datos en cada columna. Cuando envejecen, el optimizador elige planes de ejecución basados en información incorrecta, no en la realidad actual.

está activada por defecto y se dispara cuando aproximadamente el 20% de las filas de una tabla cambian. Sin embargo, en tablas con cientos de millones de filas, ese 20% representa decenas de millones de cambios, por lo que en la práctica la actualización puede ocurrir muy raramente. En ese caso, se puede forzar una actualización manual con , que analiza cada fila en lugar de una muestra. Cuando las actualizaciones de estadísticas causan ralentizaciones momentáneas, mueve la actualización al segundo plano para que las consultas siguientes se beneficien sin espera. actualiza únicamente las estadísticas que han cambiado desde la última actualización, lo que lo convierte en una opción práctica para trabajos de mantenimiento programados.

 

DBCC CHECKDB — Revisión Anual con una Opción de Reparación de Alto Riesgo

Igual que un chequeo médico anual detecta problemas antes de que se conviertan en emergencias, las verificaciones periódicas de integridad protegen la base de datos contra la corrupción silenciosa. inspecciona la integridad de las páginas, los errores de asignación y las violaciones de restricciones en toda la base de datos. omite los índices no agrupados para acelerar el análisis; limita la inspección a la estructura física de las páginas, útil para bases de datos muy grandes.

Cuando se detecta corrupción y no existe una copia de seguridad limpia, está disponible como último recurso absoluto. El comando elimina los datos dañados para que la base de datos vuelva a estar accesible, pero las filas eliminadas no se pueden recuperar. En el examen, cada vez que aparezca , piense en "último recurso, riesgo de pérdida permanente de datos."

 

Automatic Tuning — El Taller que Trabaja Mientras Usted Duerme

Imagine que las máquinas de una fábrica detectaran sus propios fallos por la noche y restauraran silenciosamente la configuración anterior antes del turno de mañana. Automatic Tuning de Azure SQL Database hace exactamente eso con los planes de consulta.

supervisa los datos de Query Store en busca de regresiones de plan. Si una consulta que tardaba 0,1 segundos ayer de repente sube a 10 segundos hoy, Automatic Tuning fuerza el último plan conocido como bueno sin ninguna intervención humana. Esta función está activada de forma predeterminada en Azure SQL Database; en SQL Managed Instance y en SQL Server local debe habilitarse manualmente. Las recomendaciones de CREATE INDEX y DROP INDEX son exclusivas de Azure SQL Database: si un índice recomendado degrada el rendimiento, el sistema revierte el cambio automáticamente.

 

MAXDOP y Resource Governor — ¿Cuántos Carriles Abrir?

Más carriles en una autopista no siempre significan tráfico más rápido. En un cruce complejo, demasiados carriles simultáneos pueden crear un cuello de botella en la incorporación. MAXDOP (Max Degree of Parallelism) limita el número de núcleos de CPU que una sola consulta puede usar al mismo tiempo.

MAXDOP se puede configurar en tres ámbitos. A nivel de instancia, se aplica a todas las bases de datos en SQL Server o SQL Managed Instance. A nivel de base de datos, anula la configuración de instancia para una base de datos específica. A nivel de consulta, el hint se aplica a una sola instrucción, anulando ambos niveles superiores. Las cargas OLTP generalmente favorecen MAXDOP entre 1 y 4; las cargas OLAP se benefician de valores más altos.

Resource Governor, disponible en SQL Server y SQL Managed Instance pero no en Azure SQL Database, divide las conexiones en grupos de cargas de trabajo y asigna límites de CPU y memoria mediante una Classifier Function, impidiendo que las consultas de informes priven de recursos a la carga OLTP en la misma instancia.

 

REBUILD vs REORGANIZE de un Vistazo

| Criterio | REBUILD | REORGANIZE | |:--|:--|:--| | Umbral de fragmentación | Más del 30% | 5–30% | | Ejecución en línea | Requiere ONLINE = ON | Siempre en línea | | Actualización de estadísticas | Análisis completo, automático | Ninguna | | Impacto de bloqueos | Bloqueo de tabla cuando es offline | Mínimo |

Una trampa frecuente en el examen: una pregunta puede describir "ejecutar mantenimiento de índices en línea" de forma que suene a REORGANIZE, pero si la fragmentación supera el 30%, la respuesta correcta es . REORGANIZE no tiene opción ONLINE: siempre se ejecuta en línea sin necesidad de ningún calificador.

!REBUILD vs REORGANIZE

Intelligent Query Processing — Aprender Trabajando

Un empleado nuevo es notablemente más eficaz al cabo de un mes que en su primer día, porque la experiencia enseña a adaptarse. Intelligent Query Processing (IQP), introducido en SQL Server 2017, aplica un ciclo de retroalimentación similar a la ejecución de consultas.

Adaptive Joins evalúan el número real de filas en tiempo de ejecución y cambian dinámicamente entre Hash Join y Nested Loop Join. Memory Grant Feedback registra cuánta memoria utilizó realmente una consulta y ajusta la asignación para ejecuciones futuras, de modo que las consultas con asignaciones incorrectas convergen gradualmente en la cantidad adecuada. Batch Mode on Rowstore lleva el procesamiento por lotes a tablas heap y B-tree normales, acelerando las consultas analíticas incluso sin un índice columnstore. Todas las funciones IQP se activan con el nivel de compatibilidad de base de datos 140 o superior.

 

Resumen para el Examen

"Fragmentación de índice 5–30%, debe permanecer en línea" -- REORGANIZE "Fragmentación de índice superior al 30%, también se necesita actualizar estadísticas" -- REBUILD "Evitar que REBUILD bloquee la tabla" -- WITH (ONLINE = ON) "Forzar una actualización de estadísticas con análisis completo" -- UPDATE STATISTICS WITH FULLSCAN "Actualizar estadísticas sin bloquear consultas" -- AUTO_UPDATE_STATISTICS_ASYNC ON "Detección y recuperación automática de regresión de plan" -- FORCE_LAST_GOOD_PLAN "Recomendaciones automáticas de índices (solo Azure SQL Database)" -- Automatic Tuning CREATE/DROP INDEX "Comprobación de integridad de base de datos, reparación de último recurso" -- DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS "Límites de CPU y memoria por carga de trabajo (solo MI/servidor local)" -- Resource Governor "Configuración de MAXDOP a nivel de base de datos" -- ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP "Ajuste automático de asignación de memoria por consulta" -- Memory Grant Feedback "Cambio dinámico de tipo de unión en tiempo de ejecución" -- Adaptive Joins

Automatic Tuning = recuperación automática de regresiones de plan (Azure SQL Database añade recomendaciones de índice), MAXDOP = límite de núcleos paralelos (tres ámbitos de configuración), Resource Governor = aislamiento de cargas de trabajo en MI y SQL Server

Volver a la lista del blog