Saltar al contenido

Mysql: cómo averiguar el nivel de aislamiento de las transacciones

Hola usuario de nuestro sitio web, hemos encontrado la respuesta a tu interrogante, desplázate y la obtendrás más abajo.

Solución:

Hay potencialmente seis valores de nivel de aislamiento de transacciones diferentes en MySQL/MariaDB, y podrían tener valores diferentes. Están:

  1. Valor definido en los archivos de configuración.
  2. Valor utilizado en la opción de línea de comando utilizada para iniciar mysqld.
  3. El nivel de aislamiento de transacción global.
  4. El nivel de aislamiento de transacciones de la sesión.
  5. El nivel que será utilizado por la próxima transacción que se cree.
  6. El nivel utilizado por la transacción actual.

La razón por la que desea conocer su valor determinará cuál (o varios) necesita.

Además, tenga en cuenta cuándo puede cambiar el nivel que se obtuvo, a veces por cosas fuera de su control.

1. Nivel configurado

Busca un transaction-isolation entrada en los archivos de configuración. Esto se puede encontrar en secciones como [mysqld] o [server].

Comience con el valor predeterminado /etc/mi.cnf, pero es posible que deba buscar en otros archivos de configuración según las declaraciones de inclusión utilizadas. Sé consciente de mysqld podría iniciarse con opciones de línea de comando que le indiquen que ignore los archivos de configuración o que use un conjunto diferente de archivos de configuración.

2. Nivel de opción de línea de comando

Examina cómo el mysqld se inició el proceso. El nivel utilizado aquí anulará cualquier especificado en los archivos de configuración.

Puede cambiar si mysqld se inicia de alguna manera diferente en el futuro.

3. Nivel mundial

Esto se puede recuperar ejecutando SELECT @@global.tx_isolation;.

Esto se establece inicialmente cuando se inicia la base de datos, al nivel proporcionado por la opción de línea de comando o desde el archivo de configuración.

Se puede cambiar ejecutando set GLOBAL transaction isolation level .... Pero tenga en cuenta que cualquier valor establecido de esa manera se perderá cuando se reinicie la base de datos. Podría cambiar si algún otro programa ejecuta el conjunto global dominio.

4. Nivel de sesión

Esto se puede recuperar ejecutando SELECT @@tx_isolation;.

Cuando se crea una nueva sesión/conexión, se establece en el nivel global actual.

Se puede cambiar ejecutando set SESSION transaction isolation level ... en esa sesión.

Si está utilizando grupos de conexiones, tenga en cuenta que su valor podría cambiar en usted (volviendo al nivel global), ya que las conexiones se pueden terminar y restablecer de forma silenciosa si se vuelve a colocar en el grupo.

5. Siguiente nivel de transacción

No hay forma de consultar esto.

Este nivel se establece ejecutando set transaction isolation level ... y ese nivel anulará el nivel de sesión y el nivel global para la próxima transacción creada en esa sesión. La próxima transacción después de esa volverá a usar el nivel de sesión (a menos que otra establecer el nivel de aislamiento de transacciones el comando se emite de nuevo).

Para conocer este valor, deberá realizar un seguimiento de cómo ha utilizado establecer el nivel de aislamiento de transacciones (si lo has usado en absoluto).

6. Nivel de transacción actual

No hay forma de consultar esto. (Es el tema del error MySQL #53341.)

Para conocer este valor, deberá inferir cuál es a partir del nivel de sesión (en el momento en que se creó la transacción) y si configuró el “siguiente nivel de transacción” inmediatamente antes de crear la transacción.

Referencias

  • Establecer transacción en MariaDB: https://mariadb.com/kb/en/library/set-transaction/

  • Niveles de aislamiento de transacciones en MySQL: https://dev.mysql.com/doc/refman/8.0/en/innodb-transaction-isolation-levels.html

verificar el nivel de transacción global (mysql8+)

SELECT @@transaction_ISOLATION;

comprobar el nivel de transacción de la sesión (mysql8+)

SELECT @@global.transaction_ISOLATION;

Yo uso el siguiente fragmento:

mysql> SELECT @@TX_ISOLATION;
+-----------------+
| @@TX_ISOLATION  |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set, 1 warning (0.00 sec)

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *