我有以下分区:
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')
为什么它会在事务日志中创建如此多的数据?