J'ai une base de données dans SQL Server 2008 qui ne cesse de croître, et j'aimerais savoir quelles tables ont provoqué la plus forte croissance au cours des 6 derniers mois.
sql-server
sql-server-2008
kashif
la source
la source
last_updated_at
horodatage, vous pouvez faire de bonnes suppositions.Réponses:
SQL Server ne suit pas ces informations. Vous auriez besoin d'une sorte de surveillance (que ce soit un outil ou un outil maison) qui conserve des instantanés de l'espace table au fil du temps. Cela peut être simple ou complexe:
sys.dm_db_partition_stats
;À moins d'avoir déjà mis en œuvre une ou plusieurs de ces méthodes, ou d'avoir inventé une machine à remonter le temps, il n'y a pas vraiment de bon moyen de déterminer la taille d'une table il y a 6 mois, ou il y a deux semaines ou 20 minutes.
la source
Si vous n'avez pas capturé et stocké ces mesures d'une manière ou d'une autre, il n'y a aucun moyen de voir l'historique. Cependant, vous pouvez voir facilement quelles tables utilisent le plus de disque maintenant si cela vous aide.
la source
Je l'exécute quotidiennement sur une base de données clients pour suivre la croissance de chaque table au fil du temps.
la source
J'ai un calendrier de script SQL sur un travail à exécuter chaque semaine. Essayez d'écrire un script qui obtient toutes les informations de sp_spaceused, sys.schemas et sys.tables. et mettez cela dans un tableau avec la date de création. (et vous pouvez commencer à surveiller pour l'avenir)
Mais si vous voulez connaître la croissance de la table pour les mois précédents et si vous n'avez pas configuré de script ou de travail, vous devrez probablement restaurer la sauvegarde dans un environnement de test et regarder la table la plus élevée et comparer combien elle a augmenté. À travers le temps.
la source
Comment je le fais dans MySQL sans outils supplémentaires:
Exécutez une requête comme "SHOW TABLE STATUS" et enregistrez le résultat dans une table avec un champ d'horodatage supplémentaire.
Avec ces données, vous avez un historique de chaque table et pouvez choisir vos tables pour la longueur des données, les lignes ou la plus grande différence. heures supplémentaires.
Comme les données d'état ne sont pas beaucoup d'octets, vous pouvez les exécuter avec un cronjob quotidien. Fonctionne parfaitement, facilement et gratuitement avec des commandes intégrées.
.
Même procédure que le lien que Marian a posté auparavant. La commande MS T-SQL devrait être quelque chose comme "SELECT * FROM INFORMATION_SCHEMA.TABLES" - juste google. J'ai trouvé 2 solutions possibles en quelques secondes:
Liste de toutes les tables dans une base de données et leurs nombres et tailles de lignes: http://www.sqlmatters.com/Articles/Listing%20all%20tables%20in%20a%20database%20and%20their%20row%20counts%20and%20sizes.aspx
SERVEUR SQL - Requête pour trouver le nombre de lignes, colonnes, ByteSize pour chaque table: http://blog.sqlauthority.com/2007/01/10/sql-server-query-to-find-number-rows-columns-bytesize- pour-chaque-table-dans-la-base-de-données-courante-trouver-la-plus-grande-table-dans-base de données /
la source