我打算按日期对数据进行分区。
我可以每天从历史数据中分离最新数据吗?
即。我想滚动日期窗口 - 在另一个物理磁盘上说一个物理磁盘上的最新30天数据和其余的(比那个更早)。
如果日期数据在早上出现一次,我如何滚动它?
答案 0 :(得分:1)
对两个磁盘进行分区并不能解决您的性能问题,因为在磁盘之间移动数据,从分区中删除数据,更新索引以及验证所有数据所涉及的劳动力都将涉及额外的IO。
您的数据是否聚集在日期列中?您声明80%的查询是过去两天的,所以如果您的数据是按日期聚类的,那么IO本质上是一个顺序读取。
过滤或分区的索引仅指向包含数据的群集或堆行,如果数据不在日期序列中,则会导致随机IO。如果您无法在日期对表进行聚类,那么按日期排序和过滤的索引(包括表的所有列)将是一个很好的性能提升。
如果您无法对表结构进行更改,并且该表未按日期聚类,我建议:
将所有表数据移动到一组 磁盘。
使用另一组磁盘作为索引 仅
使用SQL代理
自动执行此过程使用监控索引创建 警报
证明任何改变是否会带来改善的唯一方法是获得前后的基准。
答案 1 :(得分:0)
当您定义分区架构时,绝对有可能指示该架构中每个分区所在的文件组。
当您滚动数据并需要将整个分区从一个磁盘移动到另一个磁盘时,问题就出现了 - 该操作必须小心执行,并且根据数据量可能需要一些时间。
鉴于只提到了2个物理磁盘,是什么推动了拆分的需要?