为什么合并空分区边界会在事务日志中生成大量数据?

时间:2016-08-12 11:30:35

标签: sql-server-2014 database-partitioning transaction-log

我有以下分区:

ObjectId  | PartNo | Boundary            | Rows
----------+--------+---------------------+-----
146099561 |     97 | 2013-10-04 23:59:59 |   0
146099561 |     98 | 2013-10-05 23:59:59 |   0
146099561 |     99 | 2013-10-06 23:59:59 |   0
146099561 |    100 | 2013-10-07 23:59:59 |   0
146099561 |    101 | 2013-10-08 23:59:59 |   0
146099561 |    102 | 2013-10-09 23:59:59 |   0
146099561 |    103 | 2013-10-10 23:59:59 |   0
....

所有这些都是空的。 它们之前被切换到临时表,该表被截断并随后删除。所有这些都发生得非常快,并在事务日志中创建了最少的日志条目。

奇怪的是,合并分区函数的空边界会在事务日志中创建非常重要的数据量。请注意,每个边界周围的分区都是空的。这意味着我们不会移动大量字节。数据库正在使用"完全恢复模型"。

这是我用来合并边界的东西。我当然是在一个循环(这里没有显示)中进行的。

ALTER PARTITION FUNCTION TransactionTemporaryPartitionFunction ()
    MERGE RANGE('2013-10-09 23:59:59')

为什么它会在事务日志中创建如此多的数据?

0 个答案:

没有答案