¿Cuáles son los niveles de aislamiento de transacciones?
Hay cuatro niveles de aislamiento de transacciones, de menor a mayor: lectura no confirmada, lectura confirmada, lectura repetible y serializable. En el funcionamiento concurrente de las cosas, pueden producirse lecturas sucias casuales, lecturas no repetibles y lecturas fantasmas.
1. El primer nivel de aislamiento: lectura no confirmada (lectura no confirmada)
Si una transacción ha comenzado a escribir datos, otra transacción no puede escribir datos al mismo tiempo, pero está permitido Si otras transacciones leen esta fila de datos, este nivel de aislamiento se puede lograr mediante un "bloqueo de escritura exclusivo", pero no excluye los hilos de lectura. Esto evita la pérdida de actualizaciones, pero pueden ocurrir lecturas sucias, lo que significa que la transacción B lee datos no confirmados de la transacción A.
La pérdida de actualizaciones se solucionó, pero aún pueden ocurrir lecturas sucias.
2. El segundo nivel de aislamiento: lectura confirmada (lectura confirmada)
Si es una transacción de lectura (hilo), otras transacciones pueden leer y escribir. Al escribir la transacción, otras transacciones tienen prohibido acceder a la fila de datos. Este nivel de aislamiento evita lecturas sucias, pero pueden ocurrir lecturas no repetibles. La transacción A lee los datos por adelantado, la transacción B actualiza los datos y confirma la transacción, y cuando la transacción A lee los datos nuevamente, los datos han cambiado.
Se resolvieron problemas de pérdida de actualización y lectura sucia.
3. El tercer nivel de aislamiento: lectura repetible (lectura repetible)
La lectura repetible se refiere a leer los mismos datos varias veces dentro de una transacción. Antes de que finalice la transacción, otras transacciones. No se puede acceder a los datos, por lo que los datos leídos dos veces en la misma transacción son los mismos, por lo que se denomina nivel de aislamiento de lectura repetible. Las transacciones que leen los datos tendrán prohibido escribir transacciones y las transacciones de escritura prohíben cualquier otra transacción. evitando así lecturas no repetibles y lecturas sucias, pero a veces pueden ocurrir lecturas fantasma.
La transacción de lectura de datos se puede realizar a través del "*** espejo de lectura compartido" y el "bloqueo de escritura exclusivo".
Resuelve el problema de las actualizaciones perdidas, las lecturas sucias, las lecturas no repetibles, pero también se producirán lecturas fantasma.
4. El cuarto nivel de aislamiento: Serializable (serializable)
Proporciona un aislamiento de transacciones estricto, que requiere que las transacciones se ejecuten en serie y las transacciones solo se pueden ejecutar una tras otra. no se puede ejecutar al mismo tiempo. La serialización no se puede lograr únicamente mediante "bloqueos a nivel de fila". Se deben utilizar otros mecanismos para garantizar que la transacción que ejecuta la operación de consulta no acceda a los datos recién insertados.
La serialización es el nivel de aislamiento de transacciones más alto y también el más costoso. El rendimiento es muy bajo y generalmente rara vez se usa. En este nivel, las transacciones se ejecutan secuencialmente, lo que no solo evita lecturas sucias y. lecturas no repetibles, pero también evita lecturas sucias y también se evitan lecturas fantasma.
Elementos básicos de las transacciones (ACID)
1. Atomicidad: una vez iniciada la transacción, todas las operaciones se completan o no, y es imposible estancarse en el enlace intermedio. Si ocurre un error durante la ejecución de la transacción, se revertirá al estado anterior a que comenzara la transacción y todas las operaciones serán como si no hubieran sucedido. Es decir, las cosas son un todo indivisible, al igual que los átomos que se aprenden en química, que son las unidades básicas de la materia.
2. Consistencia: antes y después de que comience y finalice la transacción, las restricciones de integridad de la base de datos no se destruyen. Por ejemplo, si A transfiere dinero a B, es imposible que A deduzca el dinero pero B no lo reciba. ?
3. Aislamiento: al mismo tiempo, solo una transacción puede solicitar los mismos datos y diferentes transacciones no interfieren entre sí. Por ejemplo, A está retirando dinero de una tarjeta bancaria. B no puede transferir dinero a esta tarjeta antes de que se complete el proceso de retiro de A.
4. Durabilidad: una vez completada la transacción, todas las actualizaciones de la base de datos realizadas por la transacción se guardarán en la base de datos y no se podrán revertir.
Referencia del contenido anterior: Nivel de aislamiento de transacciones - Enciclopedia Baidu