2012-08-07 64 views
4

我要给你分配任务,以提高对表的夫妻数据管理理线(数据编档保存) 表像200GB分区大表 - 索引

我现在阅读有关表分区和最佳实践 和远因为我现在知道这个过程是这样

  • 创建文件组和文件
  • 创建分区函数
  • 分区方案 - (图间隔appopriate fileg roups)
  • 重新创建聚集索引 - 这是当下时表物理移动到另一个文件
  • 利润:)

,但不能找到一个信息 正在发生的事情与此现有的非聚集索引点? 从这里:http://technet.microsoft.com/en-us/library/ms187526(v=sql.105).aspx 我发现

虽然分区索引可以独立于它们的基表来实现的,它通常是有道理的设计分区表,然后在表上创建一个索引。当您这样做时,SQL Server会自动使用与表相同的分区方案和分区列来对索引进行分区。结果,索引按照与表格基本相同的方式分区。这使索引与表格对齐。

,另一个

分区时唯一的非聚集索引,索引键必须包含分区列。在对非唯一非聚簇索引进行分区时,SQL Server默认添加分区列作为索引的非键(包含)列,以确保索引与基表对齐。如果索引中已存在索引,则SQL Server不会将分区列添加到索引。

但没有这个参考我的问题 我一定要明确创建分区函数为现有的非聚集索引这确实/犯规有分区列在他们的定义是什么?

可以说,我们有表像

表A - 在col1 和非 COL1 COL2 COL3

与聚集索引聚集在第3栏第 上主分区

什么事情发生分区后在col3上有非聚簇索引,它是否与表对齐或仍位于PRIMARY分区

回答

3

你应该调整你的索引。有两个主要的力量将你拉向这个方向:

对于这两种对齐和不结盟的索引,存储需求可能 更大如果SQL Server应用的并行度,以构建 操作的多处理器计算机上。这是因为并行度越大,内存需求越大。对于 例如,如果SQL Server设置的并行度的4个,100个分区非对准 分割索引需要 四个处理器足够的存储器来同时4,000页,或16,000页排序。 如果分区索引是对齐的,则将内存需求减少到排序40个页面的160个(4 * 40)页面的四个处理器。

在你的情况下,这意味着明确地向每个非聚集索引添加分区列,并在与基表(聚簇索引)相同的分区方案上声明每个非聚集索引。不要尝试为非聚集索引创建不同的分区函数/方案。将分区列添加到每个索引中会在数据模型中产生深远的影响,例如。您将不再能够宣布不包含分区列主键约束(这涟漪把所有的外键定义引用分区表!),但是这是你已经买成价格,当你接受分区作为解决方案,请参阅How To Decide if You Should Use Table Partitioning

2

通常spea国王通常会删除所有非聚集索引,并在新计划中重新创建它们。这将按照与聚集索引(和行数据)相似的方式将它们拆分为表格分区。

如果你不这样做,他们将留坐在原来的文件组(小学或地方)