Mysql
 sql >> Database >  >> RDS >> Mysql

Perché un mysqldump con transazione singola è più coerente di uno senza?

Poiché il dump è in un'unica transazione, ottieni una visualizzazione coerente di tutte le tabelle nel database. Questo è probabilmente meglio spiegato da un controesempio. Supponiamo di scaricare un database con due tabelle, Orders e OrderLines

  1. Inizi il dump senza una singola transazione.
  2. Un altro processo inserisce una riga negli Orders tabella.
  3. Un altro processo inserisce una riga nelle OrderLines tabella.
  4. Il dump elabora le OrderLines tabella.
  5. Un altro processo elimina gli Orders e OrderLines record.
  6. Il dump elabora gli Orders tabella.

In questo esempio, il tuo dump avrebbe le righe per OrderLines , ma non Orders . I dati sarebbero in uno stato incoerente e non riuscirebbero al ripristino se fosse presente una chiave esterna tra gli Orders e OrderLines .

Se l'avessi fatto in una singola transazione, il dump non avrebbe né l'ordine né le righe (ma sarebbe coerente) poiché entrambi sono stati inseriti e poi eliminati dopo l'inizio della transazione.