Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dlaczego mysqldump z pojedynczą transakcją jest bardziej spójny niż ten bez?

Ponieważ zrzut znajduje się w jednej transakcji, otrzymujesz spójny widok wszystkich tabel w bazie danych. Najlepiej wyjaśnia to kontrprzykład. Załóżmy, że zrzucasz bazę danych z dwiema tabelami, Orders i OrderLines

  1. Uruchamiasz zrzut bez jednej transakcji.
  2. Inny proces wstawia wiersz do Orders stół.
  3. Inny proces wstawia wiersz do OrderLines stół.
  4. Zrzut przetwarza OrderLines stół.
  5. Inny proces usuwa Orders i OrderLines rekordy.
  6. Zrzut przetwarza Orders stół.

W tym przykładzie zrzut miałby wiersze dla OrderLines , ale nie Orders . Dane byłyby w niespójnym stanie i nie powiodło się przywrócenie, gdyby między Orders był klucz obcy i OrderLines .

Jeśli zrobiłeś to w jednej transakcji, zrzut nie miałby ani kolejności, ani wierszy (ale byłby spójny), ponieważ oba zostały wstawione, a następnie usunięte po rozpoczęciu transakcji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać różnicę między kolejnymi wierszami w MySQL?

  2. DETERMINISTIC, NO SQL lub READS SQL DATA w swojej deklaracji i włączone jest logowanie binarne

  3. Używanie dict Pythona do instrukcji SQL INSERT

  4. Wyszukiwanie pełnotekstowe Django MySQL

  5. Nieskończony zwój Ładowanie wszystkich przedmiotów naraz?