¿Cuáles son los cuatro niveles de aislamiento de transacciones?
Los cuatro niveles de aislamiento de transacciones son Lectura no confirmada, Lectura confirmada, Lectura repetible y Serializable.
1. Lectura no confirmada: las transacciones pueden leer datos no confirmados, también llamados lecturas sucias. Generalmente poco usado.
2. Lectura confirmada: este es el aislamiento de transacciones predeterminado de la mayoría de DBMS (como Oracle, SQLServer). Ejecutar una consulta acordada dos veces con resultados diferentes también se denomina lectura no repetible.
3. Lectura repetible (lectura repetible): es el nivel de aislamiento de transacciones predeterminado de MySQL. Puede garantizar que los resultados de leer los mismos datos varias veces mediante la misma transacción sean consistentes. Puede resolver el problema de la lectura sucia, pero en teoría no puede resolver el problema de la lectura fantasma.
4. Serializable: es el nivel de aislamiento más alto. Forzar la ejecución de transacciones en serie bloqueará cada fila de datos leídos. Aunque esto puede evitar el problema de las lecturas fantasma, también puede provocar una gran cantidad de tiempos de espera y problemas de contención de bloqueo. Este nivel rara vez se aplica y solo se considerará en escenarios de aplicación donde es muy importante garantizar la coherencia de los datos y no se acepta ninguna simultaneidad.
Comparación de las características del nivel de aislamiento de transacciones
Se puede ver en la definición del nivel de aislamiento de transacciones que el nivel Serializable tiene el aislamiento más alto, pero su eficiencia también es la más baja porque requiere los mismos registros para todas las transacciones se ejecutan en serie.
Para MySql, el nivel de transacción predeterminado es Lectura repetible. Aunque por definición, este nivel de aislamiento no puede resolver el problema de las lecturas fantasma, MySql utiliza un algoritmo de bloqueo de tecla Siguiente para implementar la lectura repetible, este algoritmo puede resolverlo. El problema de la lectura fantasma.
Con respecto al algoritmo de bloqueo de tecla Siguiente, al realizar una consulta, no solo bloqueará el registro de operación actual, sino que también bloqueará el rango involucrado en la consulta.
En otras palabras, si otras transacciones desean realizar operaciones de datos dentro del alcance de la consulta de transacción actual, serán bloqueadas. Por lo tanto, MySql ya tiene el nivel de aislamiento Serializable en el nivel de aislamiento de lectura repetible. aislamiento.
Referencia del contenido anterior: Enciclopedia Baidu-Nivel de aislamiento