我正在阅读ALTER PARTITION FUNCTION
最佳实践,上面写着 -
始终在分区范围的两端保留空分区,以保证分区拆分(加载新数据之前)和分区合并(卸载旧数据之后)不会发生任何数据移动。避免拆分或合并填充的分区。这可能非常低效,因为这可能导致多达四倍的日志生成,并且还可能导致严重的锁定。
问题 :
- 通过确保新边界对应于未来日期是否足以确保不会有数据移动,或者我真的需要空分区吗?
- 我认为如果分区为空,则可以进行某些优化,但是说主要成本在数据移动本身是否正确?
- SQL 2014 中是否有任何新功能可以提供帮助(我们正在从 2008 年过渡到 2014 年……是的,我知道 SQL Server 2019 已经过时了……但我们最终会到达那里)?
我在托管锁优先级上看到了很多(例如https://blogs.technet.microsoft.com/dataplatforminsider/2013/08/16/improved-application-availability-during-online-operations-in-sql-server-2014/ ); 然而,这似乎只适用于表分区切换和在线索引重建,而不适用于ALTER PARTITITON FUNCTION
.
如果您的分区函数是 RANGE RIGHT,那么可以。分区拆分移动现有分区中属于新分区的行。新分区是包含新边界值的分区。因此在 RANGE RIGHT 中,如果新的边界值在表中的所有行之后,则不需要移动任何行。
希望您一开始就选择 RANGE RIGHT,这样您就不必像
2015-12-31 11:59:59:999
.根据索引,可能需要扫描头分区以发现不需要移动的行。