Bloqueo caso de MySQL niveles diferentes de aislamiento

cerradura Categoría

He hablado antes, bloqueo dividida en dos categorías, una es el bloqueo optimista, un bloqueo pesimista. No explica en detalle aquí. mecanismo de bloqueo de diferente tamaño En esta sección se explica MySQL en diferentes niveles de aislamiento, el uso de.

Tenga en cuenta que la primera situación, no importa qué nivel de aislamiento bajo, si hay un índice, la cerradura se agrega al índice, pero en diferentes niveles de aislamiento, con el apoyo de la granularidad de bloqueo no es lo mismo; bloqueo de granularidad menor consumo más recursos. Sin un índice, el bloqueo de tabla está bloqueado, es decir, de bloqueo índices agrupados todas las filas.

Bajo nivel de aislamiento de bloqueo

nivel de aislamiento RR es de lectura repetible. REPETIBLE LEER.

nivel de aislamiento RC se lee comprometida. Lectura confirmada.

Primera mesa de construcción y la inserción de los datos, de la siguiente manera.

CREATE TABLE 'blog'(
   'id' BIGINT(20) NOT NULL,
   'name' VARCHAR(16) COLLATE utf8mb4_bin DEFAULT NULL,
   'idcard' BIGINT(20) NOT NULL,
   PRIMARY KEY('id')
) ENGINE=InnoDB DEFAULT CHARSET = utf8mb4 COLLATE=utf8mb4_bin;
-- 插入数据
INSERT INTO blog VALUES(1,'test1',100),(5,'blog',200),(8,'blog',300),(10,'test2',400);

Si una coincidencia exacta, como la actualización de la clave principal. Ya sea en el RR o en el nivel de aislamiento de RC, bloqueos de registro siempre será golpeado en un índice agrupado, que se divide en dos casos, si las dos condiciones siguientes, respectivamente, se añaden al bloqueo X en el índice de línea y cerradura S.

//在id=1的聚簇索引上加X锁
UPDATE blog SET name = 'x' WHERE id = 1;
//在id=1的聚簇索引上加S锁
SELECT * FROM blog WHERE id = 1 LOCK IN SHARE MODE;

Si el alcance de la consulta, y si, se bloqueará en la fila de índice agrupado éxito en el nivel de aislamiento de RC, el siguiente nivel, porque no hay ningún hueco en el aislamiento de bloqueo de RC, por lo que no habrá lectura fantasma fenómeno. Debido a que en el modo de aislamiento RR, mediante el bloqueo de brecha para resolver el problema de la lectura fantasma, por lo que, si está en el modo de aislamiento RR, se añadirán los bloqueos de próxima clave (filas bloqueadas y lagunas) en la fila de índice agrupado todo de golpe. Después de un índice de registro último golpe, que se combinará con el bloqueo de clave siguiente.

//在RC隔离级别下,在id=8和10的聚簇索引上加X锁
//在RR隔离级别下,在id=8、(10,+)的聚簇索引上加X锁
//在(5,8)(8,10)(10,+)加间隙锁
UPDATE blog SET name = 'test3' WHERE id > 7;
//在RC隔离级别下,在id=1的聚簇索引上加X锁
//在RR隔离级别下,在id=1、5的聚簇索引上加X锁
//在RR隔离级别下,在(-,1)(1,5)加间隙锁
UPDATE blog SET name = 'test4' WHERE id <=1;

Si encuentra que el contenido está vacío, que no alcanzó un índice agrupado, entonces bajo nivel de aislamiento RC, nada va a bloquear, pero en el nivel de aislamiento RR, encontrará espacio para bloquear el objetivo se encuentra.

Publicado 12 artículos originales · ganado elogios 2 · Vistas 669

Supongo que te gusta

Origin blog.csdn.net/gonghaiyu/article/details/104307527
Recomendado
Clasificación