Etiquetas

, , , , , , , , , , ,

SQL Server nos permite crear un plan de mantenimiento de nuestras bases de datos de forma muy sencilla sin embargo es poco común que existan en la mayoría de los entornos sencillamente por desconocimiento técnicos de los administradores de sistemas o por no saber cómo nuestras bases de datos se ven afectadas a medida que se realizan operaciones sobre ella lo cual reduce el rendimiento y a su vez los tiempo de respuesta en operaciones CRUD y especialmente en las consultas. Una vez más, más allá de que el usuario tenga que esperar un segundo más en una consulta se trata de como la disminución del rendimiento de nuestras aplicaciones afecta de forma global el desempeño de nuestra aplicación, cuanto tiempo (horas o minutos laborables) nos hace perder y los costos económicos asociados a ello, cuanto espacio estamos ocupando de manera innecesaria en nuestros servidores y cuál sería el costo económico de perder parte de nuestros datos en caso de un fallo grave en nuestros discos.

Sea que tengas una aplicación SharePoint, Dynamic CRM, Dynamic NAV, un aplicación hecha a medida, etc. vas a necesitar de un plan de mantenimiento ya que todas estas aplicaciones se ven afectadas de la misma manera. De una manera muy resumida el problema está cuando empezamos a agregar y eliminar información a nuestra base de datos, esto produce que aumente el porcentaje de fragmentación de la base de datos y de los índices por lo que la ruta que consideraba el SQL server era la mejora para realizar determinada consulta ya no lo es, para ello SQL server se basa en plan de ejecución que en base a ciertas estadísticas le permiten saber cuál es la mejor forma de atacar un consulta, pero estas estadísticas si no se actualizan en base al estado actual de la base de datos van quedando obsoletas y mientras mas desfragmentación exista mas cuesta realizar operaciones de escritura.

Con un poco de análisis de nuestras necesidades podemos llevar a cabo un plan de mantenimiento en pocos minutos. Veamos cómo hacerlo en SSMS.

En SQL Server Managment Studio  podremos ver la carpeta Managment y dentro de ella Maintenance Plans, para usar el ayudante seleccionamos Maintenance Plans Wizard

Hacemos clic en Next

Le damos un nombre a nuestro plan de mantenimiento ya que podremos crear tantos como queramos para distintas base de datos o conjunto de ellas.

Escogemos las tareas de mantenimiento que queremos realizar.

Shrink Database: reduce espacio de la base de datos y los archivos de log.

Update Statistic: asegura que el optimizador de consultas tiene la información actualizada acerca de la distribución de los datos en la base de datos, esto permite que el optimizador realice mejores cálculos acerca de cómo realizar alguna consulta.

Reorganized Index: desfragmenta y comprime los índices físicos (Clustered Index) y no físicos.

Rebuild Index: reconstruye las paginas índices permitiendo la reorganización de los datos y búsquedas más rápidas.

Check Database Integrity: confirma la integridad de los datos y índices de la base de datos.

History Cleanup: elimina información histórica sobre copias de respaldos y restauraciones.

Maintenance Cleanup: elimina archivos dejados por la ejecución de los planes de mantenimiento.

Escogemos el orden en que se ejecutan las tareas.

Para cada tarea se nos pedira que escojamos la base de datos, podemos escoger una, varias o todas.

Para cada tarea sera necesario escoger las opciones que correspondan.

Después de configurar todas las tareas se creara el plan de ejecucion.

Podremos ver en el diseñador el plan de mantenimiento que hemos creado.

En la parte superior del diseñador en el icono con forma de calendario podemos configurar la programación de un nuestro plan de mantenimiento.

Finalmente lo mismo que hemos realizado con el SSMS lo podemos realizar con SQL Server Integration Services y el SQL Server Business Intelligence  Development Studio.

Cuando creemos un proyecto podremos ver que en las herramientas tenemos una sección dedicada a tareas del plan de mantenimiento. Solo es necesario arrastrar las tareas que queremos ejecutar.

Si hace clic derecho> Editar sobre cualquier tarea la podemos configura exactamente igual como lo hacíamos con SSMS.

Con esto generaremos un paquete de SSIS que podremos ejecutar cada vez que queramos.

Como hemos visto crear un plan de mantenimiento es relativamente sencillo, obviamente cada escenario necesitara de realizar una análisis de cuáles son nuestras necesidades y como puede impactar el plan de mantenimiento a nuestra aplicación sobre todo si estamos hablamos de producto out of the box.

Más información en la MSDN

En este blog ya hemos tratado como mejorar el rendimiento de SQL Server en los siguientes post:

Cuellos de botella en SqlServer

Mantener las estadísticas actualizadas en Sql Server.