Partilhar via


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.