Pracuję nad projektem, dla którego musimy używać "księgowania transakcji" w naszym DBMS (MySQL). Zmieniliśmy już sposób korzystania z InnoDB w celu korzystania z transakcji na inne wymagania. Próbuję zrozumieć, co to jest księgowanie transakcji. Szukałem od ponad dnia, włączając w to czytanie dokumentacji MySQL. Może po prostu nie szukam właściwych słów kluczowych, nie jestem pewien. A może "księgowanie transakcji" to niewłaściwa terminologia.Księgowanie transakcji MySQL
Z tego co rozumiem, księgowanie transakcji bazy danych jest podobne do kronikowania w systemie plików, w którym zmiany są wprowadzane do kroniki, zanim zostaną zatwierdzone w systemie plików. Z tego, co przeczytałem, wynika, że silnik InnoDB przechowuje transakcje w jakimś dzienniku, zanim zostaną zatwierdzone na dysku. Czy to brzmi dokładnie? Jeśli tak, gdzie jest dziennik transakcji? Czy to jest plik ib_logfile0 i ib_logfile1?
Rozumiem, że te pliki dzienników służą do odzyskiwania po awarii, ale czy mechanizm MVCC nie odpowiada za "transakcję", która nastąpi prawidłowo, gdy nie nastąpi awaria? MyISAM ma pewien stopień odzyskiwania po awarii, podczas gdy w ogóle nie ma transakcji. – karatedog
Dziękujemy za szczegółową i terminową odpowiedź. Jestem nieco zdezorientowany, jeśli chodzi o odtwarzanie wpisów w dziennikach.Jeśli wystąpił błąd w trakcie transakcji, zanim zatwierdzenie zostało wydane, myślę, że nie chcesz odtwarzać wpisów, ponieważ transakcje są "wszystko albo nic" (nie chciałbyś, aby część transakcji być zobowiązanym). Czy możesz powiedzieć, że będą odtwarzane tylko wtedy, gdy istnieje zatwierdzenie, ale niepowodzenie nastąpiło przed zatwierdzeniem transakcji w bazie danych, ale po tym, jak została zapisana w plikach dziennika? – alfredough