Добрый день!
Подскажите пожалуйста как просмотреть на что(какие таблицы) распределяется размер базы.
Есть БД размер которой достиг 13Гб(не учитывая журнал транзакций), как быстро оперативно вычислить что именно предает такой вес?
Заранее спасибо!
Нравится
2 комментария
13 ноября 2010 13:38
Выполняем и видим что сколько занимает
+ посмотрите размер файла лога в свойствах самой базы
DECLARE @pagesizeKB int SELECT @pagesizeKB = low / 1024 FROM master.dbo.spt_values WHERE number = 1 AND type = 'E' SELECT table_name = OBJECT_NAME(o.id), rows = i1.rowcnt, reservedKB = (ISNULL(SUM(i1.reserved), 0) + ISNULL(SUM(i2.reserved), 0)) * @pagesizeKB, dataKB = (ISNULL(SUM(i1.dpages), 0) + ISNULL(SUM(i2.used), 0)) * @pagesizeKB, index_sizeKB = ((ISNULL(SUM(i1.used), 0) + ISNULL(SUM(i2.used), 0)) - (ISNULL(SUM(i1.dpages), 0) + ISNULL(SUM(i2.used), 0))) * @pagesizeKB, unusedKB = ((ISNULL(SUM(i1.reserved), 0) + ISNULL(SUM(i2.reserved), 0)) - (ISNULL(SUM(i1.used), 0) + ISNULL(SUM(i2.used), 0))) * @pagesizeKB FROM sysobjects o LEFT OUTER JOIN sysindexes i1 ON i1.id = o.id AND i1.indid < 2 LEFT OUTER JOIN sysindexes i2 ON i2.id = o.id AND i2.indid = 255 WHERE OBJECTPROPERTY(o.id, N'IsUserTable') = 1 --same as: o.xtype = 'IsView' OR (OBJECTPROPERTY(o.id, N'IsView') = 1 AND OBJECTPROPERTY(o.id, N'IsIndexed') = 1) GROUP BY o.id, i1.rowcnt ORDER BY 3 DESC
26 декабря 2011 20:35
Есть вариант:
select t.name as TableName, SUM(u.total_pages) * 8 / 1024 as SizeMB from sys.tables as t inner join sys.partitions as p on t.object_id = p.object_id inner join sys.allocation_units as u on p.partition_id = u.container_id group by t.name order by SizeMB DESC
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать