Quando as consultas DML e DDL são executadas em uma Tabela Temporal , essas alterações são propagadas adequadamente para a tabela de Histórico correlacionada. Por exemplo, uma UPDATE
tabela temporal resulta em um novo registro a ser INSERT
inserido na tabela de histórico para refletir essa mudança.
Isso é INSERT
para a tabela de histórico, bem como outras alterações propagadas, registradas no log de transações?
Isso significa que habilitar tabelas temporais efetivamente dobrará a quantidade de dados que passa pelo log de transações (pelo menos para um banco de dados com o modelo de recuperação definido como completo)?
Sim, as alterações na tabela de histórico são registradas.
Se você pensar na finalidade do log de transações, é permitir a recuperação (por meio de backups e restaurações ou o processo de recuperação normal que ocorre na inicialização do banco de dados). Se as alterações na tabela de histórico não forem registradas, a restauração de um backup de um banco de dados com tabelas temporais provavelmente resultaria em inconsistências entre a tabela principal e a tabela de histórico.
Aqui está uma pequena demonstração. A configuração cria uma tabela temporal, insere uma linha, atualiza essa linha e limpa o log.
Agora, se eu atualizar uma linha na tabela e executar a mesma consulta no log:
Esses 6 novos registros de log são:
Se eu alterar a
CREATE TABLE
instrução para remover os itens relacionados ao controle de versão do sistema e executar novamente a demonstração, o estado final do log ficará assim:Não será exatamente o dobro (inserções na tabela principal não fazem alterações na tabela de histórico), mas sim, haverá um aumento na taxa de transferência do log com certeza.