Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Por que um mysqldump com transação única é mais consistente do que um sem?


Como o dump está em uma transação, você obtém uma visão consistente de todas as tabelas no banco de dados. Isso provavelmente é melhor explicado por um contra-exemplo. Digamos que você despeje um banco de dados com duas tabelas, Orders e OrderLines
  1. Você inicia o dump sem uma única transação.
  2. Outro processo insere uma linha em Orders tabela.
  3. Outro processo insere uma linha em OrderLines tabela.
  4. O dump processa as OrderLines tabela.
  5. Outro processo exclui os Orders e OrderLines registros.
  6. O dump processa os Orders tabela.

Neste exemplo, seu dump teria as linhas para OrderLines , mas não Orders . Os dados estariam em um estado inconsistente e falhariam na restauração se houvesse uma chave estrangeira entre Orders e OrderLines .

Se você tivesse feito isso em uma única transação, o dump não teria nem o pedido nem as linhas (mas seria consistente), pois ambos foram inseridos e excluídos após o início da transação.