У меня есть база данных в SQL Server 2008, которая постоянно растет, и я хотел бы знать, какие таблицы вызвали наибольший рост за последние 6 месяцев.
sql-server
sql-server-2008
Kashif
источник
источник
last_updated_at
временная метка, вы можете сделать несколько удачных догадок.Ответы:
SQL Server не отслеживает эту информацию. Вам понадобится какой-то вид мониторинга (будь то инструмент или самодельный), который будет сохранять снимки табличного пространства с течением времени в будущем. Это может быть просто или сложно:
sys.dm_db_partition_stats
;За исключением того, что уже реализован один или несколько из этих методов, или кто-то изобрел машину времени, на самом деле нет никакого хорошего способа выяснить, насколько большой стол был 6 месяцев назад, или две недели назад, или 20 минут назад.
источник
Если вы как-то не собирали и не сохраняли эти метрики, тогда нет способа просмотреть историю. Однако вы можете довольно легко увидеть, какие таблицы сейчас используют больше всего дисков, если это поможет.
источник
Я ежедневно запускаю это в базе данных клиентов, чтобы отслеживать рост отдельных таблиц с течением времени.
источник
У меня есть расписание сценариев SQL для задания, которое нужно запускать каждую неделю. Попробуйте написать скрипт, который получает всю информацию из sp_spaceused, sys.schemas и sys.tables. и положить это в таблицу с созданным на дату. (и вы можете начать мониторинг на будущее)
Но если вы хотите узнать рост таблицы за предыдущие месяцы и если вы не настроили какой-либо сценарий или задание, вам, вероятно, потребуется восстановить резервную копию в тестовой среде, посмотреть на самую высокую таблицу и сравнить, насколько она выросла. через время.
источник
Как я делаю это в MySQL без дополнительных инструментов:
Запустите запрос типа «ПОКАЗАТЬ СТАТУС ТАБЛИЦЫ» и сохраните результат в таблице с дополнительным полем отметки времени.
С этими данными у вас есть история каждой таблицы и вы можете выбрать ваши таблицы для длины данных, строк или самой большой разницы. через некоторое время.
Поскольку данные о состоянии не имеют большого количества байтов, вы можете запускать их с ежедневным cronjob. Работает идеально, легко и бесплатно с помощью встроенных команд.
,
Та же самая процедура, что и ссылка, опубликованная ранее Мариан. Команда MS T-SQL должна выглядеть примерно так: «SELECT * FROM INFORMATION_SCHEMA.TABLES» - просто Google. Я нашел 2 возможных решения в считанные секунды:
Вывод списка всех таблиц в базе данных, их количества и количества строк: http://www.sqlmatters.com/Articles/Listing%20all%20tables%20in%20a%20database%20and%20their%20row%20counts%20and%20sizes.aspx
SQL SERVER - запрос для поиска количества строк, столбцов, ByteSize для каждой таблицы: http://blog.sqlauthority.com/2007/01/10/sql-server-query-to-find-number-rows-columns-bytesize- для-каждый стол-в-вольт- база-найти-самый большой стол-в-базы данных /
источник