- Tengo una tabla T1 en la que nadie realiza modificaciones (los usuarios sólo leen de la tabla).
- La tabla T1 que se reindexa por la noche dejando su fragmentación por debajo del 1%.
- Sin razones aparentes, a lo largo del día, la tabla aparece muy fragmentada (valores superiores al 90%).
Comprobando la configuración de su base de datos, notamos que tenía habilitada la opción auto-shrink ON; le pedimos al delegado que deshabilitara la opción, y al día siguiente la tabla ya no estaba fragmentada.
¿Qué le estaba pasando? La reducción automática de la base de datos, le estaba pasando una mala jugada al cliente.
Fíjate que aunque pienses que tu estas libre del problema porque no tienes habilitada la opción auto-shrink, si utilizas el comando DBCC SHRINKDATABASE puedes ser víctima del mismo problema.
Reproducirlo es muy sencillo; lo único que tienes que conseguir es que poner a funcionar el comando DBCC SHRINKDATABASE con espacio para liberar; por ejemplo, create dos tablas muy grandes, borra la primera, comprueba la fragmentación (DMV sys.dm_db_index_physical_stats), lanza el DBCC, y vuelve a comprobar la fragmentación. Te asombrarás con los resultados!
Corolarios:
- Deshabilita la opción auto-shrink en tus bases de datos
- Revisa tus planes de mantenimiento dando especial atención a los comandos DBCC de reducción de ficheros/base de datos.
1 comment
Muy interesante.