首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server 2008 R2数据库--为什么数据库在重新增长之前不使用空闲空间?

Server 2008 R2数据库--为什么数据库在重新增长之前不使用空闲空间?
EN

Database Administration用户
提问于 2012-11-16 20:25:10
回答 2查看 1.9K关注 0票数 2

我有一个有700个表的供应商应用程序数据库。这些数据从未被存档过,而且可以追溯到2006年。企业只是想要所有的数据。

我的问题是,当我正在监测数据库的大小/增长时,我注意到一个趋势,即数据库正在增长,但它有自由空间。

数据库为187 is,免费40 is,备份大小为146 is。数据库正在以1GB的自动增长增量增长,这是不应该做的,如果它有可用的空间,对吗?

我查看了fill_factor,因为我不确定供应商在做什么,在数据库级别上,它仍然保持在0默认值,表示页面将被填充到100%。有一些对象,大多数是索引,具有80%或85%的填充因子。

我很困惑。

我是重新索引和磁盘碎片报告回来,很少或没有碎片。

有什么主意吗?

EN

回答 2

Database Administration用户

发布于 2012-11-17 04:15:50

这里有几件值得注意的事。

首先,只要需要空间来完成事务,数据库就会增长。我写过这个这里。如果您对数据库执行维护(例如,重建索引),并且命中一个足够大的表,那么就会看到一个增长事件的结果,即使它看起来有大量的空闲空间。

其次,您可以检查默认的跟踪文件,以确定您的自动增长事件何时发生。通常情况下,您会发现增长事件的时间与维护时间是一致的,或者可能是某种批量负载。

HTH

票数 3
EN

Database Administration用户

发布于 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复制的。

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/28822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档