Eu tenho um banco de dados grande (nas dezenas de milhões de registros) em que vou executar um backup completo do banco de dados .
No entanto, o banco de dados é grande o suficiente para que as transações possam iniciar antes e durante, bem como confirmar durante e após o backup.
Por exemplo:
T0 = Transaction A start
T1 = Full database backup start
T2 = Transaction B start (will not deadlock with A)
T3 = Transaction A commit/rollback (does not matter, does it?)
T4 = Full database backup end
T5 = Transaction B commit/rollback (again, does not matter, does it?)
T0 T1 T2 T3 T4 T6
||----------||----------||----------||----------||----------||---------->
Meu entendimento é que nenhum bloqueio é usado durante um backup (embora outros problemas de desempenho possam surgir devido à alta E / S) , mas não tenho certeza do que posso garantir o que será confirmado ou não.
Além disso, minha preocupação não é que o banco de dados esteja em um estado inconsistente, mas o que será esse estado (mesmo que não seja determinístico, se houver um conjunto de regras que possa ser aplicado de forma consistente) e como ele chegou lá ( por exemplo, quanto do arquivo de dados é usado junto com o log de transações para criar um arquivo de backup)?