10 sql-server filegroups partitioning
我的数据库中有一些非常大的表,但是这些数据中有很大一部分是“旧的”。
由于我无法控制的情况,我不允许删除这些“旧”数据。另一个限制是我无法修改数据库,这意味着向其中添加文件组。现在的情况是,一切都驻留在PRIMARY文件组中。
我想将这些表分成几个分区,例如“新”、“旧”、“存档”等。我确实有一个“状态”列,我想用于此目的。
鉴于所描述的场景和限制,我想知道分区在这里是否有意义。换句话说,如果我的表以这种方式分区,但所有分区都位于同一个文件组中,SQL Server 是否足够聪明,可以在底层文件中找到我的“新”数据所在的特殊区域,而不触及具有“旧”数据的区域?
换句话说,假设我 80% 的数据是“旧的”。SQL Server 是否有一种机制可以避免访问 100% 的底层文件,而只访问 20% 包含“新”数据的内容(当然,假设我WHERE在查询子句中指定了我的分区列)。
我想要回答这个问题,需要了解分区是如何在内部实现的。我很感激任何指点。
在同一个文件组中对表进行分区有两个优点:
ALTER INDEX [foo] REBUILD PARTITION=n更多详细信息。如果要进行分区,有几件事要记住。
我建议在实施分区之前对分区进行一些彻底的研究。Kendra Little 有一个很好的资源列表,您可以从中开始。
答案是“是”。它确实对任何查询都有一种机制,可以根据用于定义分区的逻辑来过滤输入。
不过,您必须有适当的过滤器,否则所有分区都会被扫描。这通常涉及使用日期过滤器(在您的情况下)来选择分区。
实现这一点的一种方法是让视图仅访问一个分区,并在视图中使用正确的逻辑。
| 归档时间: |
|
| 查看次数: |
9521 次 |
| 最近记录: |