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

Hvorfor er en mysqldump med enkelttransaktion mere konsekvent end en uden?

Da dumpet er i én transaktion, får du en ensartet visning af alle tabellerne i databasen. Dette forklares nok bedst med et modeksempel. Lad os sige, at du dumper en database med to tabeller, Orders og OrderLines

  1. Du starter dumpet uden en eneste transaktion.
  2. En anden proces indsætter en række i Orders tabel.
  3. En anden proces indsætter en række i OrderLines tabel.
  4. Dumpen behandler OrderLines tabel.
  5. En anden proces sletter Orders og OrderLines optegnelser.
  6. Dumpen behandler Orders tabel.

I dette eksempel vil din dump have rækkerne for OrderLines , men ikke Orders . Dataene ville være i en inkonsekvent tilstand og ville mislykkes ved gendannelse, hvis der var en fremmednøgle mellem Orders og OrderLines .

Hvis du havde gjort det i en enkelt transaktion, ville dumpet hverken have ordren eller linjerne (men det ville være konsekvent), da begge blev indsat og derefter slettet, efter at transaktionen begyndte.



  1. Laravel Schema Builder ændre lagermotor

  2. Opret MySQL-database i Python ved hjælp af %s-operatoren

  3. Får MySQL-sti i kommandoprompt

  4. MySQL Du bruger sikker opdateringstilstand, og du forsøgte at opdatere en tabel uden et WHERE