Mysql
 sql >> Base de données >  >> RDS >> Mysql

Pourquoi un mysqldump avec une seule transaction est-il plus cohérent qu'un autre sans ?

Étant donné que le vidage se fait en une seule transaction, vous obtenez une vue cohérente de toutes les tables de la base de données. Ceci est probablement mieux expliqué par un contre-exemple. Supposons que vous videz une base de données avec deux tables, Orders et OrderLines

  1. Vous démarrez le vidage sans une seule transaction.
  2. Un autre processus insère une ligne dans les Orders tableau.
  3. Un autre processus insère une ligne dans les OrderLines tableau.
  4. Le vidage traite les OrderLines tableau.
  5. Un autre processus supprime les Orders et OrderLines enregistrements.
  6. Le dump traite les Orders tableau.

Dans cet exemple, votre dump aurait les lignes pour OrderLines , mais pas Orders . Les données seraient dans un état incohérent et échoueraient lors de la restauration s'il y avait une clé étrangère entre Orders et OrderLines .

Si vous l'aviez fait en une seule transaction, le dump n'aurait ni la commande ni les lignes (mais ce serait cohérent) puisque les deux ont été insérés puis supprimés après le début de la transaction.