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

In che modo l'isolamento del livello di transazione influisce sulle prestazioni in modalità autocommit in MySQL?

TL; DR:Se il tuo forum è lento, molto probabilmente il LIVELLO DI ISOLAMENTO DELLA TRANSAZIONE non ne è la causa e impostarlo su qualcosa di diverso da quello predefinito difficilmente aiuterà. L'impostazione di innodb_flush_log_on_trx_commit =2 aiuterà, ma ha conseguenze sulla durata in caso di arresti anomali.

La versione lunga:

Quale LIVELLO DI ISOLAMENTO DELLA TRANSAZIONE ho scritto in http:/ /mysqldump.azundris.com/archives/77-Transactions-An-InnoDB-Tutorial.html . Dai un'occhiata a tutti e 3 gli articoli di panoramica di InnoDB in http://mysqldump.azundris.com/categories/32 -InnoDB .

Il risultato è che in ogni caso il sistema deve essere in grado di eseguire il ROLLBACK, quindi nemmeno READ UNCOMMITTED sta cambiando tutto ciò che deve essere fatto su una scrittura.

Per le transazioni di lettura, la lettura è più lenta quando la catena di record di registro di annullamento che porta alla vista per la transazione di lettura è più lunga, quindi READ UNCOMMITTED o READ COMMITTED potrebbe essere leggermente più veloce del REPEATABLE READ predefinito. Ma devi tenere a mente che qui stiamo parlando di accessi alla memoria e sono gli accessi al disco che ti rallentano.

A proposito di AUTOCOMMIT:questo sincronizzerà ogni singola istruzione di scrittura su disco. Se hai già utilizzato MyISAM in precedenza e questo era abbastanza buono, potresti voler configurare

[mysqld]
innodb_flush_log_on_trx_commit = 2

nel tuo file my.cnf e riavvia il server.

Ciò farà scrivere il commit da mysqld alla cache del buffer del file system, ma ritarderà lo svuotamento della cache del buffer del file system su disco in modo che avvenga solo una volta al secondo. Non perderai alcun dato in caso di arresto anomalo di mysqld, ma potresti perdere fino a 1 secondo di scritture in caso di arresto anomalo dell'hardware. InnoDB si ripristinerà automaticamente, anche dopo un arresto anomalo dell'hardware, e il comportamento è ancora migliore rispetto a MyISAM prima, anche se non è completamente ACID. Sarà molto più veloce di AUTOCOMMIT senza questa impostazione.