SQL Server分区 - 概念

时间:2015-06-02 21:31:56

标签: sql-server sql-server-2008 database-partitioning

我有一个由大约数千个表组成的数据库(从2005年开始),其中约20-30%的表具有约20万年/年的增量行数。

要求是根据列lastAccessedDate可视化表的统计信息。该计划将分类为分区组(10 y, 5y, 3y, 1y, 6m, 3m, 1m, 2w, currentDate)。假设分区名为p1,p2,..p10

我能够理解可以为表link定义多个分区组。

作业每周运行一次,因此,分区方案因当前日期而异;即一周后,p10变为p9。两周后,p9变为p8,一个月后,p8变为p7;我希望你明白这个主意。

  1. 基于当前日期的分区方案是否可行?
  2. 如果这是可行的,是否值得对表进行水平分区并查询它们而不是在整个表中运行查询? SQL Server报告显示总空间使用量约为31,556 MB。
  3. 我在SQL Server 2008实例上运行它。

1 个答案:

答案 0 :(得分:0)

您提到了数据存储和统计要求。这两个不应该混淆。存储解决方案用于快速访问数据,统计信息属于报告和可视化领域。

关于存储,您应该使用分区,但不是以建议的方式。您可以在SQL Server中拥有10.000个分区,因此可以使用one dayone week作为有用的分区键。创建后,您可以切换进出分区表的部分,但不应将数据从现有分区移动到另一个分区,因为这意味着重新计算所有约束和索引。在视图中,您可以为以后的“分组依据”操作创建其他值。这些组可以描述所需的'1d,1w,1m,1q,1y'报告值。

所以是的,这是可行的,并建议为你的案例使用分区,但以不同的方式提出。