Monastery revela diferencias clave en MySQL y MariaDB

Fuentes: Automating Hermitage to see how transactions differ in MySQL and MariaDB

Este artículo explora una discrepancia crucial en la comprensión y aplicación de los niveles de aislamiento de transacciones en bases de datos MySQL y MariaDB, y presenta una nueva herramienta, Monastery, para investigar este problema. El problema central radica en la ambigüedad inherente a la definición de niveles de aislamiento en el estándar SQL, lo que permite comportamientos inesperados como 'Dirty Writes' (una transacción sobrescribiendo los cambios sin confirmar de otra). Aunque el estándar SQL lo permite, la mayoría de las bases de datos evitan este problema.

El artículo introduce un experimento mental, inspirado en el concepto de 'media zapato' (no poder adquirir la mitad de un par de zapatos en una bolera concurrentemente), para ilustrar el problema de los 'Dirty Writes'. Se presenta Monastery, una herramienta de código abierto, para ejecutar este experimento y otras pruebas de transacciones concurrentes en diferentes bases de datos y niveles de aislamiento. El objetivo no es probar que una base de datos es completamente libre de errores (algo imposible incluso con pruebas adversarias como las de Jepsen), sino caracterizar cómo se comportan los diferentes niveles de aislamiento.

Las pruebas iniciales con PostgreSQL y MySQL (Oracle) revelaron que no exhibían 'Dirty Writes' en el nivel de aislamiento 'Repeatable Read'. Sin embargo, al investigar MariaDB, se descubrió que, a pesar de lo que indicaba Hermitage (una herramienta anterior para probar transacciones), las transacciones de MariaDB en el nivel 'Repeatable Read' no eran trivialmente susceptibles a 'Lost Updates'. Esto se debe a que MariaDB ha divergido significativamente de MySQL en los últimos años, implementando un nuevo enfoque para las transacciones basado en aislamiento de instantáneas, similar al de PostgreSQL, en lugar del bloqueo de dos fases utilizado por MySQL.

El artículo concluye que Hermitage, al no estar actualizado y no ser completamente automatizado, no refleja con precisión el comportamiento actual de MariaDB. Monastery, la nueva herramienta, permite una ejecución más precisa y automatizada de las pruebas de transacciones, revelando las diferencias sutiles en el comportamiento de las bases de datos y destacando la importancia de comprender a fondo cómo funcionan los niveles de aislamiento en la práctica, más allá de la definición teórica del estándar SQL.