La semana pasada durante TechEd-Dev en Barcelona, un delegado se acercó a stand de Ask The Experts, con una duda a la que no era capaz de encontrar respuesta:

  • 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.

 

0 Shares:
1 comment
Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

You May Also Like

Más ejemplos de validación de datos con T-SQL

¿Cómo validas que los datos están proporcionando la información correcta? La validación es un aspecto imprescindible en tus proyectos. ¡Toma nota! A veces podemos realizar conteos a tablas muy grandes que llevan mucho tiempo, o necesitamos comprobar si existe una tabla o un campo dentro de una tabla, o poder comparar los resultados de 2 consultas distintas. Hoy veremos ejemplos de estos casos empleando diferentes técnicas y ejemplos prácticos con T-SQL para detectar posibles errores y su validación.