Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie wirkt sich die Isolation auf Transaktionsebene auf die Leistung im Autocommit-Modus in MySQL aus?

TL;DR:Wenn Ihr Forum langsam ist, ist der TRANSACTION ISOLATION LEVEL höchstwahrscheinlich nicht die Ursache dafür, und es wird kaum helfen, ihn auf etwas anderes als den Standardwert zu setzen. Das Setzen von innodb_flush_log_on_trx_commit =2 wird helfen, hat aber Auswirkungen auf die Dauerhaftigkeit bei Abstürzen.

Die lange Version:

Welchen TRANSAKTIONSISOLATIONSLEVEL habe ich in http:/ /mysqldump.azundris.com/archives/77-Transactions-An-InnoDB-Tutorial.html . Sehen Sie sich alle 3 InnoDB-Übersichtsartikel unter http://mysqldump.azundris.com/categories/32 an -InnoDB .

Das Ergebnis ist, dass das System in jedem Fall in der Lage sein muss, ROLLBACK durchzuführen, sodass nicht einmal READ UNCOMMITTED irgendetwas ändert, was bei einem Schreibvorgang getan werden muss.

Bei Lesetransaktionen ist der Lesevorgang langsamer, wenn die Kette der Undo-Log-Datensätze, die zur Ansicht für die Lesetransaktion führen, länger ist, sodass READ UNCOMMITTED oder READ COMMITTED etwas schneller sein kann als der standardmäßige REPEATABLE READ. Aber Sie müssen bedenken, dass wir hier von Speicherzugriffen sprechen und es die Festplattenzugriffe sind, die Sie ausbremsen.

Zum Thema AUTOCOMMIT:Dadurch wird jede einzelne Schreibanweisung auf die Festplatte synchronisiert. Wenn Sie MyISAM schon einmal verwendet haben und das gut genug war, möchten Sie vielleicht konfigurieren

[mysqld]
innodb_flush_log_on_trx_commit = 2

in Ihrer my.cnf-Datei und starten Sie den Server neu.

Dadurch schreibt der Commit von mysqld in den Puffercache des Dateisystems, verzögert jedoch das Leeren des Puffercaches des Dateisystems auf die Festplatte, sodass dies nur einmal pro Sekunde geschieht. Sie verlieren keine Daten bei einem mysqld-Absturz, aber Sie können bis zu 1 Sekunde an Schreibvorgängen bei einem Hardware-Absturz verlieren. Die InnoDB stellt sich jedoch auch nach einem Hardware-Crash automatisch wieder her, und das Verhalten ist immer noch besser als zuvor mit MyISAM, auch wenn es nicht vollständig ACID ist. Es wird viel schneller sein als AUTOCOMMIT ohne diese Einstellung.