Eu tenho uma tabela no MS SQL Server.
- Tamanho da mesa: 806 GB
- Linhas: 1,2 bilhão
- Espaço de índice: 1,2 GB
Uso da tabela: Log das chamadas do Web Service 99,9% é o uso do log, os desenvolvedores raramente consultam essa tabela no Prod (somente quando um problema é relatado ou pesquisado).
Chave Primária : Com base no "ID" que é do tipo de dados "INT". Há um índice clusterizado com base nessa coluna "ID".
Minhas intenções para esta mudança : Quer gerenciar esta tabela (como ela tem 10 anos de dados) e daqui para frente (devido a um novo requisito), existe a possibilidade de desenvolvedores / analistas aprofundarem essa tabela (apenas por alguns meses) e não quero criar uma nova tabela para o mesmo propósito.
Minhas perguntas :
[Pergunta principal] Posso particionar esta tabela com base em "DateCreated" (coluna DATETIME, NOT NULL), sem causar problemas (logicamente / em termos de desempenho).
[É bom saber] Quanto tempo ( eu entendo que depende do espaço do banco de dados/memória do servidor e outros detalhes, mas uma estimativa # seria bom ) seria necessário para particionar essa tabela enorme (se estiver tudo bem ter partição baseada na data) . Fazendo esta pergunta, pois esta é uma tabela de produção e as linhas são inseridas com frequência (agora ~ 350 registros/min).
[Não é exatamente uma pergunta, mas uma recomendação] Existe um plano melhor para gerenciar esta tabela (não deseja manter mais de 3 anos de dados em produção, o plano é mencionado abaixo )?
Plano atual (sou novo no MS SQL, então foi isso que eu criei):
- Mantenha 3 meses de dados em cada partição.
- Sistema para criar partições automaticamente antes de cada trimestre.
- Mantenha apenas 3 anos de partições na tabela ativa.
- Mova outras partições para a tabela OLD/ARCHIEVE (precisa criar isso). Dados realmente ANTIGOS a serem eliminados.