我有一个有700个表的供应商应用程序数据库。这些数据从未被存档过,而且可以追溯到2006年。企业只是想要所有的数据。
我的问题是,当我正在监测数据库的大小/增长时,我注意到一个趋势,即数据库正在增长,但它有自由空间。
数据库为187 is,免费40 is,备份大小为146 is。数据库正在以1GB的自动增长增量增长,这是不应该做的,如果它有可用的空间,对吗?
我查看了fill_factor,因为我不确定供应商在做什么,在数据库级别上,它仍然保持在0默认值,表示页面将被填充到100%。有一些对象,大多数是索引,具有80%或85%的填充因子。
我很困惑。
我是重新索引和磁盘碎片报告回来,很少或没有碎片。
有什么主意吗?
发布于 2012-11-17 04:15:50
这里有几件值得注意的事。
首先,只要需要空间来完成事务,数据库就会增长。我写过这个这里。如果您对数据库执行维护(例如,重建索引),并且命中一个足够大的表,那么就会看到一个增长事件的结果,即使它看起来有大量的空闲空间。
其次,您可以检查默认的跟踪文件,以确定您的自动增长事件何时发生。通常情况下,您会发现增长事件的时间与维护时间是一致的,或者可能是某种批量负载。
HTH
发布于 2012-11-16 21:19:59
查看事务日志文件和每个文件组上的空闲空间。这可能是因为您有特定的表/索引/等进入某个文件组,而其中一个有空闲空间,而其他的则没有。
此查询是从http://beyondrelational.com/modules/2/blogs/104/posts/11740/quick-way-to-find-the-free-space-on-each-filegroup-within-a-database.aspx复制的。
SELECT
b.groupname AS 'File Group',
Name,
[Filename],
CONVERT (Decimal(15,2),ROUND(a.Size/128.000,2))
[Currently Allocated Space (MB)],
CONVERT (Decimal(15,2),
ROUND(FILEPROPERTY(a.Name,'SpaceUsed')/128.000,2))
AS [Space Used (MB)],
CONVERT (Decimal(15,2),
ROUND((a.Size-FILEPROPERTY(a.Name,'SpaceUsed'))/128.000,2))
AS [Available Space (MB)]
FROM dbo.sysfiles a (NOLOCK)
JOIN sysfilegroups b (NOLOCK) ON a.groupid = b.groupid
ORDER BY b.groupname埃里克·约翰逊的这张也不错:http://web.archive.org/web/20100116013910/http://sqlblog.com/blogs/eric_johnson/archive/2009/08/07/file-and-filegroup-space-details.aspx
https://dba.stackexchange.com/questions/28822
复制相似问题