Mysql
 sql >> Database >  >> RDS >> Mysql

Inserimento nel diario delle transazioni MySQL

Sei decisamente sulla strada giusta qui.

Ogni volta che InnoDB esegue una transazione di cui è necessario eseguire il commit, viene eseguita come un commit a due fasi. La transazione viene prima scritta in questi registri. Quindi, vengono impegnati da lì.

Questo aiuta molto in caso di arresto anomalo di MySQL o di un arresto anomalo del server.

Quando riavvii mysql, tutte le voci non salvate in ib_logfile0 e ib_logfile1 vengono riprodotte come parte del ripristino in modo anomalo di InnoDB per portare InnoDB a uno stato armonioso (queste sono parti coerenti e durevoli di Conformità ACID )

Se elimini ib_logfile0 e ib_logfile1 e avvii mysql, tutte le transazioni non vincolate che quei file contenevano andranno perse. Durante il ciclo di ripristino del crash, se i file di registro mancano, vengono rigenerati in base a innodb_log_file_size impostazione.

Si prega di consultare la Documentazione MySQL per una descrizione dettagliata spiegazione di InnoDB .

@karatedog la parte MVCC di InnoDB avviene all'interno del tablespace di sistema, meglio noto come ibdata1. Qualunque dato sembri essere prima dell'inizio di una transazione viene registrato per consentire ad altri che accedono alle righe necessarie di avere una visione dei dati prima che venisse imposto qualsiasi aggiornamento. Ciò consente ciò che viene chiamato LETTURA RIPETIBILE. Questo rientra nella I della conformità ACID, che significa Isolamento. Ho scritto post su questo in DBA StackExchange in merito a vari scenari in cui l'isolamento delle transazioni è buono, cattivo o brutto.

Per quanto riguarda MyISAM, il ripristino del crash non è automatico. Si blocca abbastanza facilmente . Ecco perché il comando SQL REPAIR TABLE esiste. Questo è anche il motivo per cui l'utilità MySQL myisamchk ha il -r opzione per eseguire REPAIR TABLE per i tavoli MyISAM che non sono online.

MariaDB e Aria sono stati tentativi di creare un motore di archiviazione a prova di crash in sostituzione di MyISAM.