繁体   English   中英

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

[英]SQL Server Table Partitioning, what is happening behind the scenes?

我正在对仓库中非常大的事实表进行表分区。 我已经以几种不同的方式执行了脚本。 有和没有非聚集索引。 对于索引,它似乎可以极大地扩展日志文件,而对于没有非聚集索引的文件,它似乎并不会扩展日志文件,但是由于索引的重建,运行时间会更长。

我要寻找的是任何关于拆分表分区时幕后发生的链接或信息,特别是到日志文件的事件。

我认为对发生的事情(在一定程度上)进行理论化并不困难。 在幕后,每个分区都被赋予了不同的HoBT,按正常语言,这意味着每个分区实际上都位于它自己的隐藏表上。

因此,理论上划分分区(假设数据正在移动)将涉及:

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

可以确定NC索引,但是根据是否存在聚簇索引,理论化将发生变化。 索引是否分区对齐也很重要。

给定表上的更多信息(CL或堆),我们可以进一步对其进行理论化

如果分区表使用了分区功能,并且SPLIT导致两个分区都包含数据的分区,则SQL Server会将数据移动到新分区。 由于插入和删除,此数据移动将导致事务日志增长。

摘自Microsoft关于分区表和索引策略的文章

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM