Sql-Server-2008-R2
SQL Server 2008 R2 數據庫 - 為什麼數據庫在再次增長之前沒有使用可用空間?
我有一個包含 700 個表的供應商應用程序數據庫。這些數據從未存檔,可以追溯到 2006 年。企業只需要所有這些數據。
我的問題是當我監控數據庫的大小/增長時,我注意到數據庫正在增長但它有可用空間的趨勢。
數據庫為 187GB,有 40GB 可用空間,備份大小為 146GB。數據庫以 1GB 的自動增長增量增長,如果它有可以使用的可用空間,則不需要這樣做,對嗎?
我查看了 fill_factor 因為我不確定供應商在做什麼,並且在數據庫級別它保持在 0 預設值,表示頁面將被填充到 100%。有一些對象,主要是索引,具有 80% 或 85% 的填充因子。
我難住了。
我正在重新編制索引,並且磁碟碎片報告回來時很少或沒有碎片。
有什麼想法嗎?
這裡有幾點值得注意。
首先,只要數據庫需要空間來完成事務,它就會增長。我在這裡寫過這個。如果您對數據庫執行維護(例如,重建索引)並且您遇到了一個足夠大的表,那麼您可能會看到結果發生了增長事件,即使看起來您有大量的可用空間。
其次,您可以檢查您的預設跟踪文件,以了解您的自動增長事件何時發生。通常,您會發現增長事件的時間與維護相吻合,或者可能是某種批量載入。
高溫高壓
查看事務日誌文件和每個文件組上的可用空間。可能是您有某些表/索引/等。進入某個文件組並且該文件組有可用空間,但其他文件組沒有。
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
Eric Johnson 的這個也不錯: http ://web.archive.org/web/20100116013910/http://sqlblog.com/blogs/eric_johnson/archive/2009/08/07/file-and-filegroup-space -details.aspx