2

我们有一个数据库,目前大小为 1.5TB,每天增长 1 GB 的数据(文本文件),包含 500 万条记录 - 而且每天都在增长

它有很多列,但值得注意的是 START_TIME 包含日期和时间 -

我们针对一个日期范围运行许多查询 -

我们在数据库中保留了 90 天的记录,并且我们有一个更大的表,其中包含所有记录 -

针对 90 天的记录运行的查询非常快,等等,但是针对所有数据运行的查询很慢 -

我正在寻找一些非常高水平的答案,最佳实践

我们正在考虑升级到 SQL Server 企业版并使用表分区,并根据月 (12) 或天 (31) 拆分分区

最好的方法是什么?

虚拟物理,一个SAN,有多少磁盘,多少分区等等——

萨斯

4

1 回答 1

2

您不想按天拆分,因为您每个月都会触及所有分区。分区允许您接触某些数据。

为什么要分区?你能清楚地说出为什么吗?如果不是(我假设)你不应该这样做。分区本身并不能提高性能。它在某些情况下会提高性能,而在其他情况下会提高性能。

你需要了解你得到了什么,你失去了什么。这是您的收获

  • 快速删除整个分区
  • 只读分区可以在不同的备份计划上运行

这是你松动的东西:

  • 生产率
  • 标准版
  • 非对齐查询的性能较低(通常)

这是保持不变的:

  • 分区对齐查询和索引的性能

如果要分区,您可能希望在日期或月份进行,但要以连续的方式进行。所以不要让你的关键月份(日期)。让它(年(日期)+'-'+月(日期))。永远不要再碰旧的分区。

如果您的旧分区确实是只读的,请将它们中的每一个放在一个只读文件组中,并将其从备份中排除。这将为您提供真正快速的备份和较小的备份。

因为您只保留 90 天的数据,所以您可能希望每天拥有一个分区。每天午夜时分,您都会杀死最后一个分区并更改分区功能,以便为新的一天腾出空间。

这里没有足够的信息来回答有关硬件的任何问题。

于 2012-03-03T20:50:41.330 回答