Тук определено сте на прав път.
Всеки път, когато 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 във връзка с различни сценарии, при които изолацията на транзакциите е добра, лоша или грозна.
- прочетете преди да напишете транзакцията
- Тези две заявки ще доведат ли до задънена улица, ако се изпълняват последователно?
- Raid 5 подходящ ли е за инсталиране на mysql?
Що се отнася до MyISAM, възстановяването при срив не е автоматично. Срива се доста лесно
. Ето защо SQL командата REPAIR TABLE
съществува. Ето защо и помощната програма MySQL myisamchk
има -r
опция за извършване на REPAIR TABLE
за MyISAM таблици, които не са онлайн.
MariaDB и Aria са били опити да се направи безопасен при срив двигател за съхранение като заместител на MyISAM.