Hay diversos motivos por cuales una base de datos puede ponerse lenta, pero…
Por defecto, SQL Server revisa las consultas realizadas por los usuarios para identificar puntos de optimización. Cuando detecta un punto de mejora, crea estadísticas automáticamente, de manera que estas consultas se puedan ver beneficiadas.
De la misma manera, SQL Server actualiza estas estadísticas periódicamente para mantenerse al tanto de los cambios que ocurren en la data (y la distribución de la misma), esto le permite crear mejores planes de ejecución.
Por lo tanto, si tu base de datos SQL Server está lenta es posible que 2 características muy importantes estén deshabilitadas: is_auto_create_stats_on e is_auto_update_stats_on.
Para verificar si tus bases de datos tienen habilitada estas 2 características ejecuta lo siguiente:
<code>SELECT name, is_auto_create_stats_on, is_auto_update_stats_on
FROM sys.databases</code>
El resultado debe ser 1 por cada base de datos donde la característica está habilitada.
Pueden haber casos excepcionales, donde el proveedor de una aplicación nos pide que dejemos estas características deshabilitadas porque su software funciona mejor así. Si este es tu caso, es mejor seguir su sugerencia.
Por ultimo, si alguno de los valores resultantes de la consulta anterior da 0 y no hay nada que te ate a no modificar estos parámetros, puedes hacerlo de la siguiente manera:
Aquí habilitamos la actualización automática de estadísticas.
ALTER DATABASE AdventureWorks2016 SET AUTO_UPDATE_STATISTICS ON
Y aquí habilitamos la creación automática de estadísticas.
ALTER DATABASE AdventureWorks2016 SET AUTO_CREATE_STATISTICS ON
CONCLUSIONES
SQL Server utiliza estadísticas para crear mejores planes de ejecución y, sin la capacidad de crear más o actualizarlos automáticamente, el rendimiento puede verse afectado.
Si tienes alguna duda, comentario o sugerencia, puedes mandarme un email a bitácoradeundba@gmail.com.