减小Azure SQL数据库的大小

14

我正在尽力删除行并重建索引,但数据库的大小增长得非常快,我看不到我的操作产生的效果。

是否有原因导致这种情况,并且除了删除行和重建索引之外,是否有减小数据库大小的方法?

非常感谢。

3个回答

24

请运行以下特殊存储过程,并告知我们哪个数据库文件变得更大了。

sp_helpfile
如果日志文件越来越大,请运行以下语句以恢复空间日志。
DBCC SHRINKFILE (log, 0)

如果数据文件而非日志文件大小增加,请使用以下查询了解哪些表占用了最多的空间,并从那里开始调查。

select 
    o.name, 
    max(s.row_count) AS 'Rows',
    sum(s.reserved_page_count) * 8.0 / (1024 * 1024) as 'GB',
    (8 * 1024 * sum(s.reserved_page_count)) / (max(s.row_count)) as 'Bytes/Row'
from sys.dm_db_partition_stats s, sys.objects o
where o.object_id = s.object_id
group by o.name
having max(s.row_count) > 0
order by GB desc

以下查询还可以给出每个索引的大小。

select  
    o.Name,
    i.Name,
    max(s.row_count) AS 'Rows',
    sum(s.reserved_page_count) * 8.0 / (1024 * 1024) as 'GB',
    (8 * 1024* sum(s.reserved_page_count)) / max(s.row_count) as 'Bytes/Row'
from 
    sys.dm_db_partition_stats s, 
    sys.indexes i, 
    sys.objects o
where 
    s.object_id = i.object_id
    and s.index_id = i.index_id
    and s.index_id >0
    and i.object_id = o.object_id
group by i.Name, o.Name
having SUM(s.row_count) > 0
order by GB desc

非常感谢,数据库日志仅为1 GB,而数据库mdf大于800GB。 - Techy
1
我加了一个查询,告诉你哪些表占用了更多的空间。从那里开始,你就可以调查为什么这些表占用了这么多空间。 - Alberto Morillo

13

1

这篇博客文章提到了一些处理大型数据库的策略。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接