Digamos, para SQLServer2008R2 e superior, com bancos de dados em modo de recuperação completa.
Eu sempre pensei :
Quando uma transação é confirmada (COMMIT), a transação é gravada no log de transações na RAM.
Quando ocorre um CHECKPOINT (após algum tempo e / ou algumas transações e outros critérios), as transações entre o último CHECKPOINT e o atual são gravadas no disco.
Quando ocorre um BACKUP LOG, os dados são gravados no arquivo MDF.
Estou correcto? Alguns de meus colegas dizem que estou errado, e é difícil encontrar a resposta correta, mesmo com o BOL.
Obrigado!
sql-server
madoxav
fonte
fonte
Respostas:
Infelizmente, há um número de erros nas respostas até agora em relação ao funcionamento do COMMIT, então adicionarei outro. Consulte Como funciona: a apresentação de E / S do SQL Server de Bob Dorr para obter detalhes e noções básicas de E / S do SQL Server 2000 . Aqui está como isso funciona:
Todas as gravações (alterações) de dados totalmente registrados ocorrem na sequência exatamente a seguir (consulte Noções básicas sobre como o SQL Server executa uma consulta: Gravando dados ):
Um COMMIT faz o seguinte
Um CHECKPOINT faz o seguinte (simplificado), consulte Como funcionam os pontos de verificação e o que é registrado :
As gravações funcionam de maneira diferente para operações minimamente registradas, consulte Operações que podem ser minimamente registradas . Aproximadamente as operações minimamente registradas agem da seguinte forma (simplificadas):
fonte
Uma transação é gravada no log de transações antes mesmo de alterar a página ou os dados conforme solicitado pela consulta. Isso é chamado de gravação antecipada (WAL). Se o SQL Server travar enquanto uma página estiver sendo atualizada na memória, o WAL garantirá que o mecanismo do DB possa ler o log de transações e reverter a transação. Esta é uma propriedade ACID de um RDBMS.
Um ponto de verificação limpa páginas sujas do buffer para o disco. Ele se comporta de maneira um pouco diferente para o tempdb . Uma página suja é aquela que foi alterada desde a leitura do disco. Esse processo de ponto de verificação cria uma marca no log de transações até o ponto em que as transações foram confirmadas. Após uma falha, a recuperação sabe que todas as transações até essa marca foram confirmadas. Você pode emitir o ponto de verificação manualmente com um comando TSQL.
Não, quando o log de backup ocorre, o SQL Server copia as informações do log de transações do arquivo de log do banco de dados para o disco em que você está gravando o backup. Uma operação de backup lê dados do disco e grava dados no disco.
Eu gostaria que você lesse os links abaixo
Noções básicas sobre log e recuperação no SQL Server Já apontado por Mark
Livro interno do SQL Server 2008 e solução de problemas
Arquitetura e gerenciamento de log de transações
fonte
Abaixo, vamos esclarecer as coisas para você:
Referir-se :
fonte