我刚刚开始分区,并且发现了很多关于如何设置和管理滑动窗口分区的好博客(我选择关注的博客位于SQL Shack和MSSQLTips)。这两个 how-to 的说明都非常清楚,但是它们都没有讨论在添加新分区、文件组和文件时如何管理添加到数据库的空数据文件。
我对将空的数据库文件留在周围感到疑虑(对我来说,这只是马虎),所以我想到建立固定数量的数据文件进行分区(12 个,每个日历月一个)并重新使用这些文件。例如,数据库文件不是名为“MyData_2023_02”,而是名为“MyData_Month02”或类似名称。但是,我不确定如何为新分区“回收”数据库文件(同样,我对分区很陌生)。
有人可以指出我正确的方向吗:
- 交换和合并分区后清理空数据库文件
- 如何为新分区回收数据库文件
我宁愿从一开始就学习正确/适当/更好的方法来处理分区,而不是以后必须忘记并重新学习。
编辑:根据 Dan Guzman 的解决方案,我尝试为我的分区使用单个文件和单个文件组。没那么顺利:
ALTER DATABASE MY_DW
ADD FILEGROUP FG_PriceFiles_Sliding_Window
CREATE PARTITION FUNCTION [PF_PriceFiles_MonthlyPartition] (date)
AS RANGE RIGHT FOR VALUES
('2019-07-01', '2019-08-01', '2019-09-01', '2019-10-01', '2019-11-01', '2019-12-01')
GO
CREATE PARTITION SCHEME PS_PriceFiles_MonthlyPartition
AS PARTITION PF_PriceFiles_MonthlyPartition
TO ('FG_PriceFiles_Sliding_Window', 'Primary')
Msg 7707, Level 16, State 1, Line 9
The associated partition function 'PF_PriceFiles_MonthlyPartition' generates more partitions than there are file groups mentioned in the scheme 'PS_PriceFiles_MonthlyPartition'.
尽管许多分区示例将分区映射到不同的文件组,但这增加了不必要的复杂性,除非底层存储是物理隔离的并且隔离是出于特定原因(例如分层存储、优化旋转媒体上的并发扫描、只读文件组等)。 ).
考虑到您问题中的滑动窗口情况,我认为不需要单独的文件组,因此我建议将所有分区简单地放在同一个文件组中(例如
PRIMARY
)。这种做法无需额外代码即可保持整洁。