Eu estava lendo as ALTER PARTITION FUNCTION
melhores práticas que dizem -
Sempre mantenha partições vazias em ambas as extremidades do intervalo de partição para garantir que a divisão de partição (antes de carregar novos dados) e a mesclagem de partição (após descarregar dados antigos) não incorram em nenhuma movimentação de dados. Evite dividir ou mesclar partições preenchidas. Isso pode ser extremamente ineficiente, pois pode causar até quatro vezes mais geração de log e também pode causar bloqueios graves.
Perguntas :
- É suficiente garantir que não haverá movimentação de dados garantindo que o novo limite corresponda a uma data futura ou eu realmente preciso da partição vazia?
- Acho que certas otimizações são feitas se a partição estiver vazia, mas é correto dizer que o maior custo está na própria movimentação de dados?
- Existe algo novo no SQL 2014 que possa ajudar (estamos passando de 2008 para 2014 .. sim, estou ciente de que o SQL Server 2019 está fora .. mas eventualmente chegaremos lá) ?
Eu vi muito em Managed Lock Priority (por exemplo, https://blogs.technet.microsoft.com/dataplatforminsider/2013/08/16/improved-application-availability-during-online-operations-in-sql-server-2014/ ); no entanto, isso parece se aplicar apenas a Table Partition Switch e Online Index Rebuild, mas não a um arquivo ALTER PARTITITON FUNCTION
.
Se sua função de partição for RANGE RIGHT, sim. Uma divisão de partição move linhas na partição existente que pertencem à nova partição. A nova partição é a partição que contém o novo valor de limite. Portanto, em RANGE RIGHT, se o novo valor de limite for depois de todas as linhas da tabela, nenhuma linha precisará ser movida.
Espero que você escolha RANGE RIGHT para começar, para que não precise ter valores de limite como
2015-12-31 11:59:59:999
.Dependendo dos índices, a partição principal pode precisar ser verificada para descobrir que nenhuma linha precisa ser movida.