我们有一个数据库,目前大小为 1.5TB,每天都会增长 1GB 的数据(文本文件),其中包含 500 万条记录 - 而且每天都在增长
它有很多列,但值得注意的一列是 START_TIME,其中包含日期和时间 -
我们针对某个日期范围运行了许多查询 -
我们在数据库中保存了 90 天的记录,并且我们有一个更大的表,其中包含所有记录 -
针对 90 天的记录运行的查询非常快,等等,但针对所有数据运行的查询很慢 -
我正在寻找一些非常高水平的答案、最佳实践
我们正在考虑升级到 SQL Server 企业版并使用表分区,并根据月份 (12) 或天 (31) 拆分分区
最好的方法是什么?
虚拟物理、SAN、多少磁盘、多少分区等 -
萨斯
最佳答案
您不想按天分割,因为您每个月都会接触所有分区。分区允许您不接触某些数据。
为什么要分区?你能清楚地说出原因吗?如果不是(我认为)你不应该这样做。 分区本身并不能提高性能。它在某些情况下提高了性能,但在其他情况下却降低了性能。
你需要了解你得到什么和失去什么。以下是您获得的内容:
- 快速删除整个分区
- 只读分区可以在不同的备份计划上运行
这是您失去的:
- 生产力
- 标准版
- 非对齐查询的性能较低(总体而言)
以下是保持不变的内容:
- 分区对齐查询和索引的性能
如果您想分区,您可能希望按日期或月份进行分区,但要以连续的方式进行。所以不要把你的关键月份(日期)定为关键月份(日期)。使其为(年(日期)+“-”+月(日期))。永远不要再碰旧的分区。
如果您的旧分区确实是只读的,请将每个分区放入只读文件组中并将其从备份中排除。这将为您提供非常快的备份和更小的备份。
由于您只保留 90 天的数据,因此您可能希望每天有一个分区。每天午夜,您都会杀死最后一个分区并更改分区函数,为新的一天腾出空间。
此处没有足够的信息来回答有关硬件的任何问题。
关于database - 如何设置 SQL Server Enterprise 进行分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9549634/