2010-03-22 21 views
6

Para empezar, no soy DBA y estoy trabajando en la reconstrucción de los índices.Reconstruir índices no cambia el% de fragmentación para índices no agrupados

Hice uso de la sorprendente secuencia de comandos TSQL de msdn para alterar el índice basado en el porcentaje fragmentado devuelto por dm_db_index_physical_stats y si el porcentaje del fragmento es más de 30, haga una RECONSTRUCCIÓN o realice una REORGANIZACIÓN.

Lo que descubrí fue que, en la primera iteración, había 87 registros que necesitaban desfragmentación. Ejecuté la secuencia de comandos y todos los 87 índices (agrupado & no agrupado) fueron reconstruidos o reindexados. Cuando obtuve las estadísticas de dm_db_index_physical_stats, todavía había 27 registros que necesitaban desfragmentación y todas las tesis eran índices NO CLUSTERADOS. Todos los índices agrupados fueron corregidos.

No importa cuántas veces ejecute el script para desfragmentar estos registros, todavía tengo los mismos índices que se defrauden y la mayoría de ellos con la misma fragmentación%. Nada parece cambiar después de esto.

Nota: No realicé inserciones/actualizaciones/eliminaciones en las tablas durante estas iteraciones. Aún así, Rebuild/reorganize no produjo ningún cambio.

Más información: Uso de SQL 2008 escritura como disponible en MSDN http://msdn.microsoft.com/en-us/library/ms188917.aspx

Podría explicar por qué no se están cambiando estos 27 registros de índices no agrupados/modificada?

Cualquier ayuda sobre esto sería muy apreciada.

Nod

+0

¿Puede pelase proporcionar el resultado con algunas estadísticas de uno de los 27 como ejemplo? – TomTom

+0

He pegado debajo de uno de los resultados del índice para 3 iteraciones. la primera iteración cambió la fragmentación% un bit donde el segundo y el tercero no tuvieron impacto. Índice = [IX_BatchNumber] Fragmento% devuelto por dm_db_index_physical_stats iteración 1 = 52,6315789473684 iteración 2 = 41,1764705882353 iteración 3 = 41,1764705882353 \t Hay otros casos indteresting donde antes de la primera desfragmentación el valor fragmentación% era 30 y al lado saltó a 40 y se queda allí para siempre. Pero esto solo sucedió en un par de registros. Gracias. – Noddy

Respuesta

12

SQL Server no volver a generar índices que no son lo suficientemente grandes. Eche un vistazo al fragmento_count (ese es uno de los campos en la vista sys.dm_db_index_physical_stats), probablemente sea bastante bajo para esos 27 índices.

+0

Tengo el mismo problema con un índice que tiene más de un millón de páginas y está fragmentado en un 31%. Realmente me gustaría una respuesta. –

+0

FYI vea las respuestas en dba.stackexchange.com aquí: http://dba.stackexchange.com/questions/18372/why-index-rebuild-does-not-reduce-index-fragmentatation –

Cuestiones relacionadas