Desempenho da tabela temporal com versão do sistema otimizada para memória
Aplica-se a: SQL Server 2016 (13.x) e posterior
Instância Gerenciada SQL do Azure
Este artigo discute algumas considerações específicas de desempenho ao usar tabelas temporais otimizadas para memória com versão do sistema.
Quando você adiciona o controle de versão do sistema a uma tabela não temporal existente, espere um impacto no desempenho nas operações de atualização e exclusão, porque a tabela de histórico é atualizada automaticamente.
Considerações sobre desempenho
Cada atualização e exclusão é registrada em uma tabela de histórico interna otimizada para memória. Você pode enfrentar um consumo de memória inesperado se sua carga de trabalho usar essas duas operações massivamente. Por isso, aconselhamos as seguintes considerações:
Não execute exclusões maciças da tabela atual em uma única etapa. Considere excluir dados em vários lotes, realizando uma purga manual de dados entre eles, com sp_xtp_flush_temporal_history, ou enquanto estiver
SYSTEM_VERSIONING = OFF
.Não execute atualizações massivas de tabela de uma só vez, pois isso pode resultar em um consumo de memória duas vezes maior que a quantidade de memória necessária para atualizar uma tabela não otimizada para memória temporal. Este consumo de memória dobrado é temporário, porque a tarefa de escoamento de dados funciona regularmente para manter o consumo de memória das tabelas intermediárias internas dentro dos limites projetados na fase estável. O limite é 10% do consumo de memória da tabela temporal atual. Considere fazer atualizações massivas em vários lotes, ou durante
SYSTEM_VERSIONING = OFF
, como usar atualizações para definir padrões para colunas recém-adicionadas.
O período de ativação para a tarefa de esvaziamento de dados não é configurável, mas pode executar sp_xtp_flush_temporal_history manualmente, conforme necessário.
Considere o uso de columnstore clusterizado como uma opção de armazenamento para uma tabela de histórico baseada em disco, especialmente se você planeja executar consultas de análise em dados históricos que usam funções de agregação ou janelas. Nesse caso, um índice columnstore clusterizado é uma escolha ideal para sua tabela de histórico. Os índices columnstore clusterizados fornecem uma boa compactação de dados e se comportam de uma maneira fácil de inserir, alinhando-se com a forma como os dados do histórico são gerados.
Conteúdo relacionado
- Tabelas temporais versionadas pelo sistema com tabelas otimizadas para memória
- Crie uma tabela temporal com versão do sistema otimizada para memória
- Trabalhe com tabelas temporais com versão do sistema otimizadas para memória
- Monitorar tabelas temporais versionadas pelo sistema otimizadas para memória
- Tabelas temporais
- Verificações de consistência do sistema de tabela temporal
- Gerencie a retenção de dados históricos em tabelas temporais versionadas pelo sistema
- Exibições e funções de metadados de tabela temporal