sql >> Databáze >  >> RDS >> Mysql

Proč je mysqldump s jednou transakcí konzistentnější než bez?

Vzhledem k tomu, že výpis je v jedné transakci, získáte konzistentní pohled na všechny tabulky v databázi. Nejlépe se to asi vysvětluje na protipříkladu. Řekněme, že vypisujete databázi se dvěma tabulkami, Orders a OrderLines

  1. Spustíte výpis bez jediné transakce.
  2. Další proces vloží řádek do Orders stůl.
  3. Další proces vloží řádek do OrderLines stůl.
  4. Výpis zpracovává OrderLines stůl.
  5. Další proces odstraní Orders a OrderLines záznamy.
  6. Výpis zpracovává Orders stůl.

V tomto příkladu by výpis obsahoval řádky pro OrderLines , ale ne Orders . Data by byla v nekonzistentním stavu a při obnově by selhala, pokud by mezi Orders byl cizí klíč a OrderLines .

Pokud byste to udělali v jediné transakci, výpis by neměl ani objednávku, ani řádky (ale byl by konzistentní), protože oba byly vloženy a poté smazány po zahájení transakce.



  1. Úvahy o pořadí sloupců v indexech a řazení

  2. Jak migrovat datový adresář MySQL v kontejneru dockeru?

  3. dbms_metadata.get_ddl nefunguje

  4. Je MySQL LIMIT aplikován před nebo po ORDER BY?