Estou pensando em mover algumas de nossas grandes tabelas de log para particionamento de intervalo para facilitar o arquivamento. Eles raramente são usados para consultas, além de suporte e coisas relacionadas. Digamos que meus dados mais antigos sejam de 2013 e eu esteja usando 1 partição por ano. Que efeitos negativos isso terá se eu adicionar partições por alguns anos à frente (digamos até 2025)? Além disso, não há problema em usar uma coluna de carimbo de data/hora como chave de particionamento ou há alguma vantagem em usar uma coluna gerada para o ano?
Nenhum. Uma partição é basicamente uma tabela invisível, então você terá um punhado de linhas extras em várias tabelas de catálogo e quatro extensões pré-alocadas por partição vazia.
Não vejo motivo para usar uma coluna gerada. Eu não acho que o otimizador será capaz de eliminar partições definidas em
year(timestamp_column)
dado um predicado de pesquisa emtimestamp_column
si mesmo, então você provavelmente precisará modificar as consultas existentes para aproveitar a eliminação de partições. Além disso, se você quiser índices particionados, precisará adicionar a coluna de chave de particionamento a eles e,year(timestamp_column)
como uma coluna de índice, é inútil em praticamente qualquer outro aspecto.