Últimamente, en lugar de solo aumentar los archivos cuando se acercan al 80% de utilización de archivos, he sido más proactivo en reclamar espacio a través de los trucos habituales como desfragmentar montones, agregar y soltar índices agrupados, implementar la compresión de filas o páginas, etc.
Sin embargo, hay algunos casos en los que pude recuperar aún más espacio ejecutando DBCC CLEANTABLE . Con cientos de bases de datos en mi entorno, no es posible saber qué hacen los usuarios en cada una y es completamente aceptable que haya cambios que impliquen la caída de columnas de longitud fija. Por lo general, he encontrado estas oportunidades mirando los recuentos de filas frente a los recuentos de páginas en algunos scripts de utilización de espacio de objetos que he escrito. Me gustaría llevar esto un paso más allá al intentar automatizar la detección de este tipo de escenarios.
Lo que me gustaría saber es si alguien por ahí está monitoreando activamente este tipo de oportunidades y, de ser así, ¿qué buscas específicamente?
Mis pensamientos fueron escribir algo en la línea de reunir el tamaño máximo y mínimo de una fila, el número de filas en la tabla, el número de páginas asignadas y el número de páginas utilizadas, y luego hacer algunas matemáticas básicas para registrar resultados que están bien fuera de lo que se "esperaría".
fuente
Respuestas:
La solución que pensaría para este problema es ejecutar semanalmente un trabajo que ejecutará sp_spaceused para todas las tablas de una base de datos y guardar estos datos en una tabla. Si hay diferencias de tamaño para cada tabla mayor que ... digamos ... 10%, ejecutaría el dbcc limpiable.
Mi código para recorrer los tamaños de tabla se ve así:
Ahora solo necesita construir la lógica que verificará cuál sería el cambio de tamaño durante la semana y lo programará.
fuente