(Sistema de base de datos de maestros y hermanas) (11) Control de concurrencia

Hola a todos, mucho tiempo sin verte! Hoy continuamos estudiando el "Sistema de base de datos de maestras". Enseñar a las chicas a aprender la base de datos, ¿no has visto un título tan genial? "Las palabras no son asombrosas e interminables", sí, el título es genial.

Mi hermana Xiao Bu tiene 18 años, una diosa en el campus, con excelentes calificaciones, deportes versátiles, una personalidad amable y recta. Sin embargo, hasta donde yo sé, a los ojos de todos, el entierro pequeño y reluciente fue en el pasado una señora de la súper casa con una capa de hámster y rodando por el suelo, excepto comer y dormir. Y todos estos cambios comenzaron a partir de esa noche.

Desde entonces, Xiao Bu a menudo me pidió que la ayudara con su tarea. Hoy ella quiere entender el control de concurrencia en el sistema de base de datos. Este tutorial habla sobre el control de concurrencia a través de mi diálogo con Xiao Bu .

Negocios

Transacción (transacción) es una secuencia de una o más operaciones realizadas en la base de datos para completar las funciones avanzadas del sistema de base de datos.
Inserte la descripción de la imagen aquí

Instrucción de transacción SQL

  1. Inicio de transacción (inicio):BEGIN;

  2. Confirmación de transacción (commit): COMMIT;
    escribir permanentemente modificaciones de transacción en la base de datos en la base de datos

  3. Transacción abortar (abortar):ROLLBACK;

  • Deshacer todas las modificaciones de transacciones a la base de datos, como si la transacción nunca se hubiera ejecutado

  • La transacción puede ser terminada por sí misma o por el DBMS

Propiedades ACID de la transacción (TheACIDProperties)

Atomicidad: "allornothing"

  1. Las operaciones de la transacción son todas ejecutadas o ninguna

  2. La ejecución de la transacción tiene solo dos finales.

  • Enviar después de realizar todas las operaciones ⇒ sin destruir la atomicidad
  • Abortar después de realizar algunas operaciones ⇒ destruir atomicidad
  1. DBMS garantiza la atomicidad de las transacciones.

La operación realizada por la transacción abortada (abortedtxn) debe deshacerse (deshacer)

Consistencia: "itlookscorrecttome"

Si el procedimiento de transacción es correcto y la base de datos está en un estado coherente cuando comienza la transacción, la base de datos todavía está en un estado coherente cuando finaliza la transacción

  • El usuario garantiza la coherencia de la transacción (no escriba el programa incorrecto)

Aislamiento: "asifalona"

La ejecución de una transacción no es interferida por otras transacciones

Hay 2 formas de ejecutar transacciones múltiples

  • Ejecución en serie ⇒ no destruye el aislamiento

  • La ejecución de entrelazado ⇒ puede romper el aislamiento

DBMS garantiza el aislamiento de transacciones

  • Control de concurrencia (control de concurrencia): determine el orden correcto de ejecución cruzada de las operaciones de transacciones múltiples

Durabilidad: "sobrevivir fallas"

  1. Una vez que se confirma la transacción, todas las modificaciones a la base de datos deben escribirse en la base de datos de forma permanente.

  2. La falla (falla) hace que la transacción modifique la base de datos con 4 resultados

  • Todos los cambios en la transacción enviada se han almacenado de manera persistente ⇒ No destruya la durabilidad
  • Las modificaciones para confirmar transacciones son solo almacenamiento parcialmente persistente ⇒ destruir persistencia
  • Se ha persistido alguna modificación de la transacción cancelada ⇒ destruir la persistencia
  • La modificación de la transacción cancelada no es almacenamiento persistente ⇒ no destruye la durabilidad
  1. DBMS garantiza la durabilidad de las transacciones.
  • Rehacer (rehacer) compromete la transacción para modificar la base de datos
  • Deshacer (deshacer) abortar la transacción para modificar la base de datos

Control de concurrencia

Conceptos basicos

  1. Base de datos (base de datos): una colección fija de objetos de datos
  • El objeto de datos es un concepto abstracto, que puede ser valor de atributo, tupla, página, relación o base de datos
  • Los objetos de datos también se denominan elementos de base de datos.
  • No consideremos la inserción y eliminación de datos.
  1. Transacción: una secuencia de operaciones de lectura / escritura en objetos de base de datos
  • Las transacciones pueden realizar muchas operaciones en la base de datos, pero el DBMS solo se preocupa por las operaciones de lectura / escritura de la transacción en objetos de datos

Horarios

Un cronograma es una secuencia de operaciones importantes para una o más transacciones .
Inserte la descripción de la imagen aquí

Programación en serie (Horarios de serie)

Si las operaciones de diferentes transacciones en un cronograma no están intercaladas, el cronograma es un cronograma en serie.

Programación no serial (NonserialSchedules)

La programación que no es programación en serie se llama programación no en serie.

Corrección de la programación (Corrección de horarios)

Cada transacción se ejecuta de forma aislada (ejecución de aislamiento), cambiará la base de datos de un estado consistente (estado consistente) a otro estado consistente.
Inserte la descripción de la imagen aquí
Cualquier programación en serie puede mantener la consistencia de la base de datos. La programación
Inserte la descripción de la imagen aquí
no en serie puede destruir la consistencia de la base de datos.
Inserte la descripción de la imagen aquí

Anomalías

La programación no serial conducirá a un comportamiento anormal de las transacciones (comportamiento anormal), destruyendo así la consistencia de la base de datos.

脏 写 (DirtyWrites)

Antes de enviar T1, el valor escrito por T1 fue sobrescrito por T2.
Inserte la descripción de la imagen aquí

Lecturas sucias

Inserte la descripción de la imagen aquí

Lecturas irrepetibles (Lecturas irrepetibles)

  • T2 cambia el valor de A que ha sido leído por T1, y T2 se compromete.

  • Si T1 intenta leer el valor A nuevamente, T1 obtendrá resultados diferentes, incluso si T1 no modifica el valor de A.
    Inserte la descripción de la imagen aquí

Fantasmas

Horarios equivalentes

Si las dos planificaciones tienen el mismo efecto en cualquier instancia de la base de datos, son equivalentes.
Inserte la descripción de la imagen aquí

Horarios serializables

Si un horario es equivalente a un horario serial, entonces el horario es un horario serializable (serializableschedule)
Inserte la descripción de la imagen aquí

Ventaja

Inserte la descripción de la imagen aquí

Desventajas

  1. La programación serializable tiene baja concurrencia

  2. En algunos escenarios, las transacciones concurrentes no necesitan estar estrictamente aisladas

  • La modificación de algunos objetos por una transacción puede exponerse a otras transacciones concurrentes.

  • Un nivel de aislamiento débil (nivel de aislamiento más débil) puede mejorar la concurrencia del sistema.

Niveles de aislamiento

Bajo diferentes niveles de aislamiento, el valor del objeto modificado por una transacción es diferente de la visibilidad de otras transacciones concurrentes

  • El nivel de aislamiento de la transacción se puede establecer antes de que comience la transacción.
SETTRANSACTIONISOLATIONLEVEL<isolation-level>;

Leer no comprometido

Las modificaciones realizadas por transacciones no confirmadas (uncommittedtxn) son visibles para otras transacciones
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Leer comprometido

Solo los cambios realizados por la transacción confirmada (committxn) son visibles para otras transacciones.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Lectura repetible (RepetibleRead)

Si una transacción no modifica el valor del objeto X, el valor X leído por la transacción en cualquier momento es igual al valor X leído al comienzo de la transacción.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Serializable

Inserte la descripción de la imagen aquí

Serialización de control de concurrencia

El conflicto puede ser serializado

Las implementaciones de DBMS que admiten niveles de aislamiento serializables (exigir) son todas serializables en conflicto

  • Las condiciones de colisión serializables son más estrictas que las serializables normales

  • Los conflictos se pueden serializar para una implementación más fácil en DBMS

Conflicto (conflictos)

Dos operaciones de conflicto (conflicto), si

  • Estas dos operaciones pertenecen a diferentes transacciones.
  • Estas dos operaciones involucran el mismo objeto, y al menos una operación es escribir

Conflicto escritura-escritura

Los conflictos de escritura-escritura pueden resultar en escrituras sucias (dirtywrite)
Inserte la descripción de la imagen aquí

Conflicto escritura-lectura

Los conflictos de escritura y lectura pueden provocar lecturas sucias
Inserte la descripción de la imagen aquí

Conflicto de lectura-escritura

Los conflictos de lectura y escritura pueden conducir a lecturas irrepetibles
Inserte la descripción de la imagen aquí

Equivalencia de conflictos (equivalencia de conflictos)

Dos conflictos de programación son equivalentes (equivalentes en conflicto) si las dos programaciones implican la misma operación de la misma transacción

  • Cada par de operaciones en conflicto tiene el mismo orden en ambos horarios
    Inserte la descripción de la imagen aquí

Programación de conflictos serializables

Si un conflicto de programación es equivalente a una determinada programación en serie , la programación es una programación serializable en conflicto.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Programación serializable no conflictiva

Inserte la descripción de la imagen aquí

Resumen

Juguemos, juguemos y juguemos, no te burles del aprendizaje.

Este artículo presenta transacciones, programación, niveles de aislamiento y serialización en el control de concurrencia . Profundizar la comprensión y la memoria al estudiar.

130 artículos originales publicados · Me gusta 1797 · Visita 310,000+

Supongo que te gusta

Origin blog.csdn.net/JAck_chen0309/article/details/105649979
Recomendado
Clasificación