sql >> Databáze >  >> RDS >> Mysql

Žurnálování transakcí MySQL

Tady jste rozhodně na správné cestě.

Kdykoli InnoDB provede transakci, která musí být potvrzena, je provedena jako dvoufázové potvrzení. Transakce se nejprve zapíše do těchto protokolů. Poté jsou odtud zavázáni.

To velmi pomáhá v případě selhání MySQL nebo selhání serveru.

Když restartujete mysql, všechny nepotvrzené záznamy v ib_logfile0 a ib_logfile1 se přehrají jako součást obnovy InnoDB po havárii, aby se InnoDB dostal do harmonického stavu (Toto je konzistentní a trvanlivé části Soulad s kyselinou )

Pokud vymažete ib_logfile0 a ib_logfile1 a spustíte mysql, všechny nepotvrzené transakce, které tyto soubory obsahovaly, budou ztraceny. Pokud během cyklu obnovy po havárii chybí soubory protokolu, jsou znovu vygenerovány na základě innodb_log_file_size nastavení.

Podrobnou dokumentaci k MySQL naleznete v dokumentaci vysvětlení InnoDB .

@karatedog část MVCC InnoDB se odehrává v systémovém tabulkovém prostoru, lépe známém jako ibdata1. Jakákoli data, která se zdají být před zahájením transakce, se zaznamenají, aby ostatní, kteří mají přístup k potřebným řádkům, měli k dispozici pohled na data před zavedením jakýchkoli aktualizací. To umožňuje to, čemu se říká OPAKOVATELNÉ ČTENÍ. To spadá pod I v souladu s ACID, myslím tím izolaci. Napsal jsem o tom příspěvky na DBA StackExchange s ohledem na různé scénáře, kdy je izolace transakcí dobrá, špatná nebo ošklivá.

Pokud jde o MyISAM, obnova po havárii není automatická. Docela snadno havaruje . Proto SQL příkaz REPAIR TABLE existuje. To je také důvod, proč MySQL utilita myisamchk-r možnost provést REPAIR TABLE pro tabulky MyISAM, které nejsou online.

MariaDB a Aria byly pokusy vytvořit úložný modul bezpečný při havárii jako náhradu za MyISAM.




  1. Nejrychlejší způsob, jak spustit stejný dotaz vícekrát na serveru SQL

  2. Jak převedu relační hierarchii na uzavírací tabulku v MySQL?

  3. Nelze načíst ID posledního vloženého řádku v režimu spánku pomocí Oracle

  4. Node MySQL provádí více dotazů nejrychleji, jak je to možné