lunes, 22 de octubre de 2012

Obtener la fragmentación de los índices de una Base de datos y aplicar mantenimiento

Hola a todos, hoy les coloco esta entrada que considero muy importante siguiendo la línea de la optimización de nuestras bases de datos, el script que les coloco a continuación me permite visualizar el % de fragmentación que tiene nuestros índices en el cual les coloco como parámetro en la consulta que me indique los que sean mayores a 30%.

   1: SELECT top 60 OBJECT_NAME(i.OBJECT_ID) AS TableName,
   2: i.name AS IndexName,
   3: indexstats.avg_fragmentation_in_percent
   4: FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'DETAILED') indexstats
   5: INNER JOIN sys.indexes i ON i.OBJECT_ID = indexstats.OBJECT_ID
   6: AND i.index_id = indexstats.index_id
   7: WHERE indexstats.avg_fragmentation_in_percent > 30

Se recomienda que aquellos índices que estén entre el rango de 5% a 30% se les aplique una reorganización usando para ello la siguiente función:



   1: ALTER INDEX 'NombreDelIndice' REORGANIZE

En cuanto a los índices que sobrepasen el 30% se recomienda aplicar el rebuild que realiza una regeneración del índice. Se aplica de la siguiente forma:



   1: ALTER INDEX 'NombreDelIndice' REBUILD WITH (ONLINE = ON)

El parámetro “ONLINE=ON” nos índica que regeneración de un índice se puede ejecutar en línea o sin conexión. En cambio la reorganización de un índice siempre se ejecuta en línea. Para lograr una disponibilidad similar a la opción de reorganización, debe volver a generar los índices en línea.

No hay comentarios:

Publicar un comentario