Sql-Server
表定期大量增長和收縮的分配策略
我有一個 SQL Server 2014 數據庫,其中包含 100 多個表,在一年中的增長率為 5%。多讀書,少寫。
該數據庫將通過另一組 20 多個表進行擴展,這些表定期(每季度)在一夜之間增長,幾乎與整個數據庫其餘部分的總和一樣多。
這些表在幾個小時內處理結束時完全清空。這些表中的數據是相當可消耗的,但為了參照完整性,需要與其他表位於同一個數據庫中。
對於某些範例編號,假設第一個 DB 為 20GB,表的子集增長到 15GB,然後被清空。因此,在幾天的過程中,數據的實際大小在 20 到 35 GB 之間波動。
- 在規劃這個系統時我可以做些什麼來幫助解釋這種波動?
- 這是文件組發揮作用的地方嗎?
- 將這組表移動到他們自己的文件組有什麼好處/問題?
作為@MaxVernon 答案的補充,您可以進行一些優化:
- 為暫存表使用不同的文件組,並確保文件組位於不同的物理驅動器(或 LUN)上。
- 使用即時文件初始化以及適當的自動增長設置。我有一個方便的腳本來分析自動增長事件。
- 由於您將在載入後清空臨時表,因此請確保在載入後清空
UPDATE STATISTICS
。有關快速有效地載入數據的更多技巧,請參閱數據載入性能指南。將這組表移動到他們自己的文件組有什麼好處/問題?
優點是您可以對生產數據所在的主文件組進行一次部分還原,然後您可以還原暫存表所在的文件組。
我唯一要注意的是要有一個經過良好測試的 RESTORE 策略,因為現在您有多個文件組,在發生災難時進行恢復時需要習慣這些文件組。