MySQL nivel de aislamiento (lectura no confirmada, de lectura confirmada, lectura repetible, serializable)

Nivel de aislamiento: una transacción debe cambiar el recurso o los datos de otras transacciones con el grado de aislamiento

Hay varios niveles diferentes de aislamiento de transacción de base de datos utilizando el nivel de aislamiento de la cerradura es diferente de bloqueo de diferentes aplicaciones en última instancia conducir a la transacción de nivel de aislamiento
para lograr la forma en nivel de aislamiento es de bloqueo

Una, la lectura no confirmada de lectura no confirmada []

Leer medios no comprometidos: una transacción puede leer datos no cometió otra transacción
que dará lugar a sucia leer los datos que se leen los datos en la base de datos en la memoria en lugar de en un disco real

Ejemplo:

  • 1, abra una ventana de línea de comandos A inicia una transacción y después de la consulta los registros de la tabla
    establecen la ventana actual del nivel de aislamiento de leer no comprometidos

comando:

set session transaction isolation level read uncommitted
  • 2, un B adicional también abre una ventana abierta y luego ejecutar la transacción, pero no se compromete instrucción SQL
  • 3, una ventana de re-ejecutar la ventana de consulta no ve los datos presentados por B

Dos, Lee Commited [Lectura confirmada]

Y leer todo lo contrario del nivel de aislamiento no comprometida sólo pueden leer los datos que no presentaron datos a los otros asuntos que se han presentado se lee no salir de
, pero causará un problema: antes y después de la lectura de los resultados no es lo mismo sucede con la lectura no repetible
no La lectura repetible es incapaz de realizar múltiples lecturas que dará lugar a resultados mixtos

Ejemplo:

  • 1, abra una ventana de línea de comandos A inicia una transacción y después de la consulta los registros de la tabla
    establecen la ventana actual del nivel de aislamiento de leer no comprometidos

comando:

set session transaction isolation level read committed
  • 2, un B adicional también abre una ventana abierta y luego ejecutar la transacción, pero no se compromete instrucción SQL
  • 3, una ventana de volver a ejecutar la ventana de resultados de consulta para ver el B acaba de ejecutar sentencias SQL, ya que no se ha presentado
  • 4, la ventana de ejecución B Enviar
  • 5, para llevar a cabo en una ventana y la mirada en este momento verá la ventana de resultados B se ha modificado
  • 6, pero va a causar un problema: Ventana de A en la vista de datos de la primera y segunda vista de los resultados de los datos no son la misma

Tres, Lectura repetible Lectura repetible []

MySQL El nivel de aislamiento predeterminado
del nivel de aislamiento puede tomar sus propias sesiones de lectura de datos en varias ocasiones y el resultado no es la misma situación no se produce
incluso si otra transacción también ha presentado todavía están visualizar los datos anteriores

Ejemplo:

  • 1, abra una ventana de línea de comandos A inicia una transacción y después de la consulta los registros de la tabla
    establecen la ventana actual del nivel de aislamiento es de lectura repetible

comando:

set session transaction isolation level repeatable read
  • 2, a continuación, abra otra ventana B está en una transacción y luego ejecutar la instrucción SQL, pero no compromete
  • 3, una ventana de volver a ejecutar la ventana de consulta B se acaba de ver los resultados ejecutar sentencias SQL, ya que no se ha presentado
  • 4, la ventana de ejecución B Enviar
  • 5. Una ventana en la ejecución Comprobar que los resultados de la consulta y los resultados serán consistentes con los resultados anteriores no cambiarán

Cuatro, Serializable [serialización]

El nivel de transacción es el más alto nivel de transacción que el anterior varios tienen fuertes
frente a varios problemas [Dirty leer lectura no repetible magia Lectura] puede ser resuelto

Ejemplo:

  • 1, una abertura de la ventana de línea de comandos A y una tabla de búsqueda se inicia el registro de la transacción
    conjunto de la corriente transacción ventana de nivel de aislamiento serializable

comando:

set session transaction isolation level read serializable
  • 2. También hay transacción abierta se abre una ventana B entonces ejecutar la instrucción SQL, pero no comete
  • 3. Una ventana en este momento para volver a ejecutar la consulta será atrapado y no se presenta
  • 4, la ventana de ejecución B Enviar
  • 5, entonces la ejecución Ver los resultados se muestran en la ventana de una

Serializable puede evitar todos estos problemas, pero que están utilizando este nivel de aislamiento será algunos problemas
tales como causar problemas de rendimiento debido a que otras transacciones concurrentes tienen que esperar Asuntos mesa de operaciones se puede entonces ser sometida actualmente abajo de otro modo sólo han estado esperando


Publicados 174 artículos originales · ganado elogios 5 · Vistas de 240.000 +

Supongo que te gusta

Origin blog.csdn.net/Piconjo/article/details/104913975
Recomendado
Clasificación