减少Azure SQL数据库大小

时间:2017-08-23 01:38:04

标签: sql-server azure azure-sql-database

我正在尽力删除行并重建索引,但数据库的大小正在快速增长,我无法看到我的操作效果。

是否有原因并且除了行删除和索引重建之外还有办法减少数据库的大小吗?

非常感谢

3 个答案:

答案 0 :(得分:7)

请运行以下特殊商店程序,让我们知道哪个数据库文件越来越大。

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 :(得分:1)

这个https://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/options_for_select引用了一些应对大型数据库的策略。

答案 2 :(得分:0)

查看此Microsoft Post。

https://docs.microsoft.com/en-us/azure/sql-database/sql-database-file-space-management#reclaim-unused-allocated-space

回收未使用的已分配空间 DBCC缩小 一旦确定数据库可回收未使用的已分配空间,请在以下命令中修改数据库名称,以缩小每个数据库的数据文件。

SQL

-缩小分配的数据库数据空间。

DBCC SHRINKDATABASE (N'db1')

SHRINKFILE在Azure SQL上不适用于我