sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo afecta el aislamiento del nivel de transacción al rendimiento en el modo de confirmación automática en MySQL?

TL;DR:Si su foro es lento, lo más probable es que el NIVEL DE AISLAMIENTO DE TRANSACCIONES no sea la causa y configurarlo en algo más que el predeterminado difícilmente ayudará. Establecer innodb_flush_log_on_trx_commit =2 ayudará, pero tiene consecuencias de durabilidad para los bloqueos.

La versión larga:

¿Qué NIVEL DE AISLAMIENTO DE TRANSACCIÓN tengo escrito en http:/ /mysqldump.azundris.com/archives/77-Transactions-An-InnoDB-Tutorial.html . Consulte los 3 artículos de descripción general de InnoDB en http://mysqldump.azundris.com/categories/32 -InnoDB .

El resultado es que, en cualquier caso, el sistema debe poder ROLLBACK, por lo que ni siquiera READ UNCOMMITTED cambia nada de lo que debe hacerse en una escritura.

Para las transacciones de lectura, la lectura es más lenta cuando la cadena de registros de deshacer que conducen a la vista de la transacción de lectura es más larga, por lo que la LECTURA NO COMPROMETIDA o la LECTURA COMPROMETIDA pueden ser ligeramente más rápidas que la LECTURA REPETIBLE predeterminada. Pero debe tener en cuenta que aquí estamos hablando de accesos a la memoria y son los accesos al disco los que lo ralentizan.

Sobre el asunto de AUTOCOMMIT:Esto sincronizará cada declaración de escritura en el disco. Si ha estado usando MyISAM antes y eso fue lo suficientemente bueno, es posible que desee configurar

[mysqld]
innodb_flush_log_on_trx_commit = 2

en su archivo my.cnf y reinicie el servidor.

Eso hará que la confirmación escriba desde mysqld al caché del búfer del sistema de archivos, pero retrasará el vaciado del caché del búfer del sistema de archivos al disco para que suceda solo una vez por segundo. No perderá ningún dato en el bloqueo de mysqld, pero puede perder hasta 1 segundo de escritura en el bloqueo del hardware. Sin embargo, InnoDB se recuperará automáticamente, incluso después de un bloqueo del hardware, y el comportamiento sigue siendo mejor que con MyISAM antes, incluso si no es ACID completo. Será mucho más rápido que AUTOCOMMIT sin esa configuración.