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

Журналиране на транзакции в MySQL

Тук определено сте на прав път.

Всеки път, когато InnoDB извърши транзакция, която трябва да бъде ангажирана, тя се извършва като двуфазен комит. Транзакцията се записва първо в тези регистрационни файлове. След това те са ангажирани от там.

Това помага много в случай на срив на MySQL или срив на сървъра.

Когато рестартирате mysql, всички незаети записи в ib_logfile0 и ib_logfile1 се възпроизвеждат отново като част от възстановяването при срив на InnoDB, за да доведе InnoDB в хармонично състояние (Това е последователни и издръжливи части на Съответствие с ACID )

Ако изтриете ib_logfile0 и ib_logfile1 и стартирате mysql, всяка неангажирана транзакция, която съдържат тези файлове, се губи. По време на цикъла на възстановяване при срив, ако регистрационните файлове липсват, те се регенерират въз основа на innodb_log_file_size настройка.

Моля, вижте Документацията на MySQL за подробна обяснение на InnoDBа .

@karatedog MVCC частта на InnoDB се случва в рамките на системното таблично пространство, по-известно като ibdata1. Каквито и данни да изглеждат преди началото на транзакция, се записват, за да се позволи на другите, които имат достъп до необходимите редове, да имат изглед на данните, преди да бъдат наложени каквито и да било актуализации. Това позволява това, което се нарича ПОВТОРЯемо-ЧЕТЕНЕ. Това попада под I на ACID съответствие, I означава изолация. Написах публикации за това в DBA StackExchange във връзка с различни сценарии, при които изолацията на транзакциите е добра, лоша или грозна.

Що се отнася до MyISAM, възстановяването при срив не е автоматично. Срива се доста лесно . Ето защо SQL командата REPAIR TABLE съществува. Ето защо и помощната програма MySQL myisamchk има -r опция за извършване на REPAIR TABLE за MyISAM таблици, които не са онлайн.

MariaDB и Aria са били опити да се направи безопасен при срив двигател за съхранение като заместител на MyISAM.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изпуснах таблицата general_log, как да я създам отново?

  2. Проблем с задействането на mysql в грешна схема

  3. Защо трябва да имаме колона за ID в таблицата с потребители?

  4. Имам ли нужда от htmlentities() или htmlspecialchars() в подготвените оператори?

  5. Използвайте mysqldump за архивиране на MySQL или MariaDB