cerradura entendimiento MySQL--, transacción, los niveles de aislamiento, control de concurrencia (continuará)

la arquitectura lógica del servidor 1.MySQL

      Fuente: sitio web oficial de MySQL
      cerradura entendimiento MySQL--, transacción, los niveles de aislamiento, control de concurrencia (continuará)
      para cada conexión será en el servidor MySQL genera un hilo (rosca interna por la dirección del grupo de subprocesos). Por ejemplo: para introducir una instrucción de selección, MySQL primero averiguar si el caché de seleccionar este conjunto de resultados en la caché de consultas , si no seguir para llevar a cabo análisis → → realizar la optimización fue el proceso; de lo contrario, será obtener el conjunto de resultados directamente desde la memoria caché.

cerradura 2.MySQL

cerradura 2.1 compartir y bloqueo exclusivo (Compartido y bloqueos exclusivos)

      los bloqueos compartidos y exclusivos son estándar bloqueo de filas .
      1) bloqueos compartidos S : estándar bloqueos de lectura , los bloqueos de lectura para permitir que una pluralidad de conectores puede ser la misma temporización simultáneamente a leer los mismos recursos , sin molestar a los demás.
      2) bloqueo exclusivo los ejes X : También conocido como un bloqueo de escritura , un bloqueo de escritura de bloques otros bloqueos de escritura o lectura cerraduras para asegurar al mismo tiempo solamente una conexión puede escribir datos , mientras que la prevención de otros usuarios de los datos de lectura y escritura .

Tipo de bloqueo nombre Inglés También conocido como A la misma hora común
Shared bloquea S bloqueos compartidos bloqueo de lectura El mismo tiempo, permitiendo que múltiples conexiones simultáneas para leer el mismo recurso, la interferencia. Ambos se bloquean las estrategias mecanismo en sí, hace una distinción entre estas dos estrategias de bloqueo
X bloqueo exclusivo Bloqueos exclusivos  bloqueo de escritura Los mismos datos de tiempo se puede escribir una sola conexión, al tiempo que evita que otros usuarios puedan leer y escribir los datos. ídem

2.2 bloqueo con intención (Locks intención)

      Antecedentes: La coexistencia de múltiples cerraduras escena granularidad.
      InnoDB soporta múltiples bloqueo granularidad ( granularidad de bloqueo : se puede dividir en bloqueos de fila y bloqueos de tabla ), se les permite coexistir y bloqueos de tabla. Con el fin de lograr la granularidad multi-nivel de bloqueo , InnoDB emplea bloqueos de intención.
      bloqueos de intención : a nivel de tabla cerraduras. Primera declaración anticipada de un intento , y conseguir el bloqueo con intención nivel de tabla (bloqueo con intención compartido o exclusivo ES bloqueo con intención IX), si éxito , que será más adelante, o bien está (permitido) , la tabla de algunas líneas más cerraduras (S o X) a.
      Nota : Además de bloquear tablas ... escribir, se bloqueará todas las filas de la tabla, los otros bloqueos de intención escena real no se bloquean todas las filas.
      Un acuerdo de bloqueos de intención : en antes de la transacción puede adquirir un bloqueo compartido en una fila de una tabla , debe primero obtener un bloqueo en la tabla bloqueo IS o . En antes de la transacción puede adquirir un bloqueo exclusivo en las filas de la tabla , debe adquirir primero un bloqueo IX en la mesa .
      Los bloqueos de intención para la multi-granularidad escena de fondo de bloqueo coexisten, compatibilidad sigue:

X IX S ES
X Conflicto Conflicto Conflicto Conflicto
IX Conflicto Compatible Conflicto Compatible
S Conflicto Conflicto Compatible Compatible
ES Conflicto Compatible Compatible Compatible

      Conflicto: exclusivo
      compatible: compatibilidad de
      bloqueo con intención única manifestación de intención, un bloqueo débil , paralelo compatible (la IS, en paralelo compatibles entre IX) entre bloqueos de intención. X e IS, IX mutuamente excluyentes, S y IX son mutuamente excluyentes. cerradura intención es más débil que el X / S cerraduras , hay una anticipación importancia. En primer lugar obtener débil es, bloqueo IX, si la adquisición falla no tienen que hacerse más fuerte S, X cerradura.

2.3 Índice de bloqueo de registro (Record Locks)

        por ejemplo: c1 SELECT FROM t donde C1 = 10 FOR UPDATE, si se utiliza el índice para c1. Prevent otra transacción cambia la línea de c1 = 10 de.
        bloqueo de registro bloquee siempre en la línea de índice. Incluso si una tabla no ha puesto ningún índice, esta vez INNODB crearía un índice agrupado implícita (clave primaria), y luego bloquear en el índice agrupado.
        Cuando no campo de consulta indexada, por ejemplo: actualización t setcolumn = " A" donde la columna B = "B", si el índice de campo ColumnB (o no es una combinación del índice de prefijo) no existe, esta declaración bloqueará la tabla de bloqueo de todos los registros es decir . Si la ejecución de la instrucción es capaz de realizar un campo de índice ColumnB, a continuación, sólo las filas donde se bloquearán el encuentro.

2.4 Bloqueo de una brecha (Gap cerraduras)

        lagunas de bloqueo: la brecha entre el índice de bloqueo de registro, o el bloqueo de un índice de brecha antes de la grabación, o después de un registro índice de brecha de bloqueo.
        Por ejemplo: SELECT UID t1 DONDE uid ENTRE 1 y 4 FOR UPDATE, el bloqueo de otra transacción uid valores en la columna, ya que la brecha existente entre todos los valores dentro de la gama están bloqueados.
        En cuanto a datos utilizando un índice único para buscar filas únicas seleccionar una de, ningún hueco está bloqueado . (No comprenden una combinación de índice único, a saber: Gaplock no actúa sobre índice único solo )
        , por ejemplo: * SELECT FROM t donde id = 100, si no Identificación del índice o un índice no único, la declaración en frente de la brecha de bloqueo. Si la columna identificador de índice el desplazamiento, la afirmación anterior es sólo para las líneas 100 utilizando los bloqueos de registro del identificador de índice, si otras sesiones para insertar una fila en el espacio delante no es importante.
        Un solo índice puede abarcar el valor de separación y una pluralidad de valores de índice, o incluso vaciar.
        La brecha entre la cerradura es una solución de compromiso en el rendimiento y bloqueo de concurrencia compromiso peso, por cierto nivel de aislamiento de transacción, tales como el nivel RC.
        En la brecha de solapamiento (o la superposición de las filas) brecha permitido a coexistir.
        La misma brecha, lo que permite una transacción mantiene brecha X-Lock (bloqueo de escritura brecha / bloqueo exclusivo), mientras que en otra transacción en el hueco de retención (bloqueo de escritura de espacios / bloqueo exclusivo)

cerradura con llave-2.5next

        bloqueo de próxima clave es una combinación del bloqueo de registro y bloqueo brecha.
        Por ejemplo: la presencia de un partido fila consulta b = 6 (con un índice no único en b), NextLock es: B en ( "antes" = filas añadido bloqueo RecordLock 6, y b = antes de bloqueo uso Gaplock 6 : Ordenar índice) de todas las filas.
        ejecución de la consulta cuando la estrategia a nivel de fila de bloqueo de MySQL, explorará las filas en la cerradura (X o S), que está acoplado registro de bloqueo, de forma simultánea en todas las líneas antes el registro más el bloqueo de Gap.
        Siguiente Key Lock se asume que un índice contiene el valor del índice Ken 10,11,13 y 20. El bloqueo de las siguientes secciones:
        cerradura entendimiento MySQL--, transacción, los niveles de aislamiento, control de concurrencia (continuará)
        Nota: InnoDB nivel de aislamiento predeterminado (RR), al lado de bloqueo de llave automáticamente. (La razón: brecha actúa sobre el RR, si se trata de RC, la brecha de bloqueo no surte efecto, entonces la siguiente naturaleza tecla de bloqueo no tendrá efecto).

2,6 inserto de bloqueo con intención (Insert Intención Locks)

        inserción bombín de la cerradura intención es un lugar en la instrucción de inserción de bloqueo de espacio cuando las cerraduras gap , bloquea todas las filas antes de insertar filas .
        Insertar bloqueo con intención de tal manera para indicar que la inserción de la intención, si se inserta en múltiples transacciones en el mismo índice en el hueco no está enchufado en la misma posición de la brecha, que no es necesario esperar a que el otro.
        Por ejemplo: la presencia de índice de valores 5 y 8 de la grabación, se insertan en intento separada transacción 6 y 7, antes de obtener un bloqueo exclusivo en la línea insertada, para cada transacción usando el espacio entre el bloqueo de inserción de bloqueo intención 4 y 7, pero no bloquee entre sí, debido a que estas acciones no entren en conflicto.

cerradura entendimiento MySQL--, transacción, los niveles de aislamiento, control de concurrencia (continuará)
cerradura entendimiento MySQL--, transacción, los niveles de aislamiento, control de concurrencia (continuará)

2.7AUTO-INC Locks

        cerradura AUTO-INC es un bloqueo de tabla especial, producido en este escenario: transacción inserto (inserción en) la mesa que tiene columna AUTO_INCREMENT.
        En el caso más simple, si el valor de una transacción se inserta en la tabla, a continuación, cualquier otra transacción debe esperar insertado en los propios valores de la tabla, por lo que una transacción se inserta en la primera fila de recibir un valor de clave primaria continua.
 

3. Transacción

        Transacción es un conjunto de SQL atómica, o una unidad separada de trabajo. Esa transacción, o motores de MySQL toda llevará a cabo en esta declaración sql grupo, o todos no ejecutar (en la que falla tal declaración).

3.1 de confirmación automática (AutoCommit, MySQL por defecto)

   cerradura entendimiento MySQL--, transacción, los niveles de aislamiento, control de concurrencia (continuará)
        MySQL por defecto a modo de confirmación automática, es decir, cada uno es una transacción de SQL, que no es necesario un control del cumplimiento explícito. Si autoCommit cerrado, entonces cada SQL están habilitados de forma predeterminada una transacción, la transacción se presentará sólo después de una implementación explícita de "comprometerse".

3.2 Visualización de transacciones (START TRANSACTION ... COMMIT)

        Ejemplo: Great dar pequeño Y L 100 transferencias de dinero, lo que necesita para llevar a cabo tres operaciones:
        1) control de saldo de la cuenta es mayor que la pequeña Y 100;
        2) pequeña reducción Y cuenta 100;
        3) un gran aumento en cuenta L 100.
        Estas tres operaciones es una transacción, debe ser empaquetado ejecución, ya sea todo éxito o no realiza, cualquier fallo resultará en una operación de las tres operaciones, de "no ejecutar" - reversión.

ÁCIDO 3,3 transacciones

        A (atomiciy) atomicidad: una transacción debe asegurarse de que, o bien todas las operaciones que ejecutan o se deshace, no se pueden realizar sólo una parte de esta situación.
        C (consistencia) Consistencia: datos deben asegurarse de que la conversión de un estado coherente a otro estado coherente. Tal transacción se lleva a cabo en la segunda etapa de un fallo del sistema, los datos no aparecerá menos pequeña cuenta Y 100, caso L de cuentas grandes pero no cambió. Cualquiera de mantener el original (de nuevo laminado), o menos pequeña Y 100 L grande, mientras que la pluralidad 100, sólo dos de los estados de coherencia.
        I (aislamiento) Aislamiento: Cuando una transacción no se ha completado la ejecución, por lo general garantizar que otra sesión no puede ver el resultado de esta transacción.
        D (durabilidad) Persistencia: Una vez que los datos se comprometen, será preservada. Después de la finalización de los fallos del sistema de envío de datos a tiempo, no se perderán datos.
 

4. nivel de aislamiento

        

Supongo que te gusta

Origin blog.51cto.com/13678728/2479233
Recomendado
Clasificación