Tengo una base de datos en SQL Server 2008 que está creciendo todo el tiempo, y me gustaría saber qué tablas han causado el mayor crecimiento en los últimos 6 meses.
sql-server
sql-server-2008
kashif
fuente
fuente
last_updated_at
marca de tiempo, podría hacer algunas conjeturas bien fundamentadas.Respuestas:
SQL Server no rastrea esta información. Necesitaría algún tipo de monitoreo (ya sea una herramienta o una cosecha propia) que mantenga instantáneas del espacio de la tabla a lo largo del tiempo. Esto puede ser simple o complejo:
sys.dm_db_partition_stats
;A menos que ya haya implementado uno o más de estos métodos, o que alguien invente una máquina del tiempo, no hay una buena manera de averiguar qué tan grande era una mesa hace 6 meses, hace dos semanas o hace 20 minutos.
fuente
Si no ha estado capturando y almacenando esas métricas de alguna manera, entonces no hay forma de ver el historial. Sin embargo, puede ver fácilmente qué tablas están usando más disco ahora si eso ayuda.
fuente
Ejecuto esto diariamente en una base de datos de clientes para rastrear el crecimiento de tablas individuales a lo largo del tiempo.
fuente
Tengo una programación de secuencia de comandos SQL en un trabajo para ejecutar cada semana. Intente escribir un script que obtenga toda la información de sp_spaceused, sys.schemas y sys.tables. y poner eso en una tabla con la fecha de creación. (y puede comenzar a monitorear para el futuro)
Pero si desea averiguar el crecimiento de la tabla de los meses anteriores y si no configuró ningún script o trabajo, probablemente necesite restaurar la copia de seguridad en un entorno de prueba y ver la tabla más alta y comparar cuánto creció a través del tiempo.
fuente
Cómo lo hago en MySQL sin herramientas adicionales:
Ejecute una consulta como "SHOW TABLE STATUS" y guarde el resultado en una tabla con un campo de marca de tiempo adicional.
Con estos datos tiene un historial de cada tabla y puede elegir sus tablas para la longitud de los datos, las filas o la diferencia más grande. tiempo extraordinario.
Como los datos de estado no son muchos bytes, puede ejecutarlos con un cronjob diario. Funciona perfecto, fácil y gratis con comandos integrados.
.
El mismo procedimiento que el enlace que Marian publicó antes. El comando MS T-SQL debería ser algo así como "SELECCIONAR * DE INFORMACIÓN_SQUEMAS.TABLES" - solo google. Encontré 2 posibles soluciones en segundos:
Listado de todas las tablas en una base de datos y sus recuentos y tamaños de filas: http://www.sqlmatters.com/Articles/Listing%20all%20tables%20in%20a%20database%20and%20their%20row%20counts%20and%20sizes.aspx
SERVIDOR SQL - Consulta para encontrar filas de números, columnas, ByteSize para cada tabla: http://blog.sqlauthority.com/2007/01/10/sql-server-query-to-find-number-rows-columns-bytesize- para-cada-tabla-en-la-base-de-datos-actual-encuentre-la-tabla-más-en-base de datos /
fuente