Mysql
 sql >> база данни >  >> RDS >> Mysql

Защо mysqldump с единична транзакция е по-последователен от този без?

Тъй като дъмпът е в една транзакция, получавате последователен изглед на всички таблици в базата данни. Това вероятно се обяснява най-добре с контрапример. Да речем, че изхвърляте база данни с две таблици, Orders и OrderLines

  1. Започвате изхвърлянето без нито една транзакция.
  2. Друг процес вмъква ред в Orders маса.
  3. Друг процес вмъква ред в OrderLines маса.
  4. Дъмпа обработва OrderLines маса.
  5. Друг процес изтрива Orders и OrderLines записи.
  6. Дампа обработва Orders маса.

В този пример вашият дъмп ще има редовете за OrderLines , но не и Orders . Данните биха били в непоследователно състояние и биха се провалили при възстановяване, ако имаше външен ключ между Orders и OrderLines .

Ако го бяхте направили в една транзакция, изхвърлянето нямаше да съдържа нито поръчката, нито редовете (но щеше да бъде последователно), тъй като и двете бяха вмъкнати и изтрити след началото на транзакцията.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql, utf-8 колона:как да изберете само регистри и малки букви?

  2. Спрете и се върнете, ако един от множеството подготвени оператори се провали

  3. 3 начина за намиране на редове, които съдържат малки букви в MySQL

  4. Предотвратяване на кеширане на заявки в MySQL

  5. Как мога да изпълня SQL файл и да запиша резултатите в txt файл с една команда?