SQL Server表分区,幕后发生了什么?

时间:2011-01-19 13:49:22

标签: sql sql-server-2008 partitioning

我正在仓库中非常大的事实表上使用表分区。我用几种不同的方式执行了脚本。有和没有非聚集索引。使用索引时,它似乎会显着扩展日志文件,而没有非聚簇索引时,它似乎不会扩展日志文件,但由于重建索引而需要更多时间来运行。

我正在寻找的是关于拆分表分区时特定于日志文件后面发生的事情的任何链接或信息。

2 个答案:

答案 0 :(得分:0)

我认为并不是很难理解正在发生的事情(在某种程度上)。在幕后,每个分区都有一个不同的HoBT,在正常语言中意味着每个分区实际上都位于它自己的隐藏表上。

因此理论化分区的分裂(假设数据正在移动)将涉及:

  • 将数据插入新表格
  • 从旧表中删除数据

可以计算出NC索引,但是根据是否存在聚集索引,理论化将会改变。索引是否与分区对齐也很重要。

如果有更多关于表格(CL或Heap)的信息,我们可以进一步理论化

答案 1 :(得分:0)

  

如果a使用分区功能   分区表和SPLIT结果   两个都包含的分区   数据,SQL Server将数据移动到   新分区。这个数据运动   将导致事务日志增长到期   插入和删除。

这是微软在Partitioned Table and Index Strategies

上发表的一篇文章

所以看起来它正在从旧分区中删除并插入到新分区中。这可以解释t-log的增长。