Algunas aclaraciones sobre diferentes niveles de aislamiento en la transacción de la base de datos?

Abajo está la declaración escrita de Artículo de aislamiento de Wikipedia acerca deREPEATABLE READS

En este nivel de aislamiento, una implementación DBMS de control de concurrencia basada en bloqueos mantiene bloqueos de lectura y escritura (adquiridos en los datos seleccionados) hasta el final de la transacción. Sin embargo, los bloqueos de rango no se administran, por lo que puede ocurrir el fenómeno de lecturas fantasmas (ver más abajo).

Mi pregunta aquí es cuándo comienza y termina la transacción, respectivamente.

Si tomamos el ejemplo de lecturas no repetibles con READATABLE READS Isolation level en el mismo enlace, según mi comprensión, la sección 1 comienza cuando se dispara la primera consulta, es decir,SELECT * FROM users WHERE id = 1. DBMS mantendrá el bloqueo en la tabla de usuarios hasta y a menos que la transacción finalice. aquí Por fin Quiero decir es cuando la conexión se revierte o no se confirma al completarSELECT * FROM users WHERE id = 1. Hasta ese momento, la transacción 2 esperará, ¿verdad?

Pregunta 2: - Ahora, si consideramos el nivel de aislamiento y su comportamiento como se indica a continuación (en el mismo enlace)

Isolation level     Dirty reads   Non-repeatable   Phantoms
Read Uncommitted    may occur     may occur        may occur
Read Committed      -             may occur        may occur
Repeatable Read     -             may occur        -
Serializable        -             -                -

Según mi entendimiento, el más confiable es serializable, luego lectura repetible y luego lectura confirmada, pero aún he visto aplicaciones que utilizan lectura confirmada. Es que debido al rendimiento de la lectura serializable y repetible es malo en comparación con lectura confirmada porque en serializable será secuencial y en caso de transacción tiene que esperar a que otra transacción libere el bloqueo. @¿Correcto Entonces, para obtener lo mejor de los tres, podemos usar el nivel de aislamiento como lectura comprometida conSELECT FOR UPDATE (para lograr una lectura repetible). ¿No está seguro de cómo podemos lograr la lectura fantasma si lo deseamos, en caso de que el nivel de aislamiento de lectura esté comprometido?

Respuestas a la pregunta(1)

Su respuesta a la pregunta