motor y de bloqueo de MySQL InnoDB

motor y de bloqueo de MySQL InnoDB

cerraduras de MySQL son muy preguntas de la entrevista de alta frecuencia, que a menudo nos encontramos, pero no nos dimos cuenta cuando en su desarrollo diario. Pongo mi propia comprensión de las cerraduras de compartir a través de este post, porque la cerradura requiere una combinación de transacciones para entender, este artículo sólo se describen los conceptos básicos de la cerradura, el mismo con el fin de entender la transacción será más profunda, introducir algunos conceptos básicos de InnoDB, sino también para grabar su el aprendizaje, la bienvenida para discutir el intercambio.

Siguiente: Transacción y el mysql MVCC

Categoría de la cerradura:

  • granularidad de bloqueo de acuerdo con puntos

    • Bloqueo global: Bloqueo de la base de datos, una biblioteca es una analogía de la construcción, es decir, cerrar la puerta esta vez todo el edificio
    • bloqueo de tabla: bloqueos de una tabla específica, una analogía de mesa para un piso en un edificio, en cuyo caso toda la capa es una capa de bloqueo
    • bloqueos de nivel de fila: la cerradura es una línea de datos, cada bloqueo de fila analogía es una capa de una habitación, esta vez un bloqueo es una habitación
  • La diferencia entre la mesa y la fila cerraduras
    • A nivel de tabla de bloqueo, el gasto grande, cierre rápido, no se producen estancamiento. Bloqueo de granularidad grande. Bajo grado de concurrencia.
    • el bloqueo de fila, una pequeña sobrecarga, el bloqueo lento, habrá un punto muerto, una pequeña granularidad de bloqueo, alta concurrencia.

bloqueo a nivel de la mesa:

bloqueo de tabla MySQL, hay dos: los metadatos y de mesa cerraduras.

Dos formas de bloqueos de tabla:

  • Tabla compartida bloqueo de lectura

  • Tabla bloqueos exclusivos de escritura

    • Adición manual de bloqueo de tabla

      lock table tableName read;
    • Ver caso de bloqueo de tabla

      show open tables;
    • cerradura de eliminación de mesa

      unlock tables;

cerradura de metadatos:

  • La versión 5.5 introdujo el MDL, una tabla de adiciones y supresiones de datos a tiempo, además de MDL bloqueo de lectura, el tiempo para realizar cambios en la estructura de la tabla, además de bloqueo de escritura MDL.

el bloqueo de filas

motor de almacenamiento bloqueo de filas de MySQL se implementa, MySQL ahora el motor de datos predeterminado para el InnoDB. Este artículo describe el bloqueo de fila InnoDB;

InnoDB bloqueo de registro es lograr el enganche entrada de índice, lo que significa que sólo se utilice el índice para recuperar los bloqueos de registro de datos, o que van a utilizar bloqueos de tabla.

De acuerdo con la gama términos

  • bloqueo de registro: Bloqueo uno de los registros de la tabla.
  • Bloquear la brecha:
    • Bloqueo de los valores intermedios registro de índice
    • Un primer valor de bloqueo o registro de índice frente al último valor del índice después de

De acuerdo con Funcionalmente

  • bloqueos compartidos, también conocido como S-bloqueo: permite a una operación para leer una línea de datos, evitando otras operaciones añaden bloqueo exclusivo, se permite bloqueo compartido a seguir añadiendo lectura
  • bloqueo exclusivo, también conocido como X cerraduras: permitir que la transacción para adquirir un bloqueo exclusivo a los datos de actualización, la prevención de otras transacciones añadir leer compartida cerradura y un bloqueo exclusivo a escribir add

Para InnoDB, la declaración se añadirá automáticamente a las adiciones y supresiones a bloqueos de exclusividad, bloqueo X. Para consulta ordinaria no añade ningún bloqueo.

bloqueos de intención

InnoDB también se dio cuenta del bloqueo a nivel de tabla, que es bloqueo con intención. bloqueos de intención MySQL uso interno y no requiere que el usuario intervenga.

  • Intención bloqueos compartidos, Lock es: Derechos pretende añadir a la cerradura de la línea de datos compartida, debe adquirir una transacción es bloquear la tabla antes de agregar un bloqueo compartido a una línea de datos.
  • Intención bloqueo exclusivo de bloqueo IX: datos de transacción se va a dar de Air Canada un bloqueo exclusivo, los datos de la transacción en una fila para añadir bloqueo exclusivo deben adquirirse antes del bloqueo IX en la mesa.

Intención bloqueos de registro y pueden coexistir, la función es bloquear la intención de mejorar el rendimiento cuando una tabla completa de datos de actualización, o al actualizar toda la tabla para recuperar los datos que tienen bloqueo de fila en la fila.

brecha de bloqueo

Como su nombre indica, se añade la cerradura principal entre la grabación, la diferencia no está permitido para insertar datos. Por ejemplo, la identificación es 24, esta vez utilizando la brecha que encerraría 234 de bloqueo de estos tres, más tarde también introducir una de las principales cerraduras brecha papel, bloqueo de la brecha de nuevo en la introducción, cuando la transacción es resolver el problema de la lectura fantasma. Aquí para averiguarlo.

punto muerto

MySQL y estancamiento estancamiento en nuestra teoría del código es el mismo, la diferencia es, MySQL se refiere a dos conexiones diferentes a la espera de uno al otro para liberar el bloqueo para liberar los recursos que poseen, por lo que el estancamiento resultante. MySQL también tiene optimización estancamiento derecha. A continuación, específicamente más adelante.

Entonces empezamos a introducir la transacción, lo anterior es sólo una introducción breve para explicar los conceptos básicos de la cerradura, cerradura de combinación, así como parte de las necesidades de transacción de entender, por lo que hay un bloqueo posterior.

Antes de presentar la transacción, Hablemos de la arquitectura InnoDB, algunas partes de la transacción implicará el contenido de esta sección.

archivo de disco InnoDB

archivo de disco InnoDB

  • espacio de tabla
    • espacio de tabla del sistema es un espacio de tabla compartida
    • El sistema comprende un conjunto de datos de espacio diccionario mesa, buffer de escritura doule, tampón de cambio, de deshacer log área de almacenamiento que comprende datos de usuario y estructura de la tabla índice creado en la tabla de sistema
  • espacio de tabla de usuario
    • Establecer parámetros innodb_file_per_table, para cada usuario puede crear un espacio de tabla de usuario independiente basado en el motor InnoDB tabla, que es el archivo .ibd.
    • El almacenamiento de los datos de la tabla, la información del índice.

estructura de memoria que InnoDB

  • Piscina de aficionado
    • Los datos se almacenan en el disco, y el disco debido a la velocidad de la CPU diferencia de velocidad, el uso de la agrupación de almacenamiento intermedio para mejorar el rendimiento general.
    • Puede ser proporcionado por el tamaño innodb_buffer_pool_size grupo de búfer, el tamaño de la agrupación de almacenamiento intermedio en el rendimiento va a afectar.
    • Tipo de datos de grupo de búfer:
      • Índice Página
      • página de datos
      • Cuando el motor de almacenamiento de trabajo, tiene que cargar un disco de datos unidad de la página en la memoria, las páginas de datos y páginas de índice son el tipo más importante de la página dos tipos
      • deshacer página: mysql para lograr una instantánea multi-versión puede ser entendido como la cadena de versión. MVCC y operaciones de reversión están relacionados con el registro de deshacer.
      • inserto buffer: rendimiento mejorado para la inserción de un índice no agrupado
      • índices hash adaptativos
      • InnoDB bloqueo de almacenamiento de información
      • Datos de información del diccionario

datos de la memoria desde el disco

La figura InnoDB datos fuera del disco se puede ver que hay dos formas de lograr

  • datos de la página sucia del disco
  • registro de rehacer pre-escrito

Hay dos maneras de hacer un pedido, se puede entender como la persistencia en el disco. Es asegurar que el número de tiempos de inactividad repentina biblioteca, la pérdida de datos.

páginas sucia del S de disco se producen y es escritura aleatoria, que consume tiempo largo. disco frecuente pérdida de rendimiento IO es muy grande. Y la seguridad de los datos no puede ser garantizada. Si los datos de la página sucia no es tiempo suficiente para dejar el tiempo de inactividad plato o bandeja proceso, entonces se perderán los datos.

En vista de lo anterior, MySQL completa con la seguridad de datos de seguridad doble, páginas sucias en el disco es una caída, mientras que otro es pre-escrito registro de rehacer, en primer lugar tenemos que saber hacer de nuevo persistió en el disco es la secuencia de escritura, la velocidad de escritura de la orden más rápido que las escrituras aleatorias, cuando un amigo le preguntará, páginas sucia del disco por qué no usarlo pero el orden escrito?

velocidad de escritura de la orden, al mismo tiempo va a producir recursos de disco fragmentación del disco, la fragmentación del disco será de gran desperdicio.

registro de rehacer la persistencia vez que se escriben en el disco cuando la transacción se confirma el archivo de rehacer, en cuyo caso los datos de la página sucia no es necesariamente remató el plato, órdenes lugar páginas sucias son controlados por el mecanismo de control puesto de control, no estamos aquí para proceder que decir.

La ocurrencia de tiempo de inactividad base de datos:

  • datos de la página sucios casi nunca conducen, las transacciones no confirmadas. Esto produce una pérdida de datos, todos sabemos que si la transacción no se confirma otro punto de vista estos pérdida de datos es normal.
  • datos de la página sucios casi nunca conducen, la transacción se ha presentado, a continuación, hacer de nuevo archivo de registro ya tiene datos, se reiniciará cuando la recuperación de datos MySQL desde un archivo de registro de rehacer en.

Algunos amigos van a decir, que los datos del archivo de registro de rehacer no sería infinito?

ib_logfile0, ib_logfile1 que lleva el nombre rodo ingrese en nuestro disco, se puede ver que hay dos archivos, utilizando una forma circular de la escritura, si se escribe 1 sobre el total de escritura 2,2 1, por lo que el ciclo.

registro de rehacer persistió en el disco es configurable, juego por el innodb_push_log_at_trx_commit InnoDB

  1. Cuando el valor del atributo de 0, se confirma la transacción, no volver a hacer una operación de escritura, la espera del hilo principal para el tiempo de escritura;
  2. Cuando el valor de la propiedad 1, se confirma la transacción, los datos se escriben en el disco, para asegurar que no hay pérdida de datos;
  3. 2 Cuando el valor de la propiedad, se confirma la transacción, los datos se escriben en la memoria caché del sistema, permitiendo que el sistema de archivos para juzgar por sí mismos cuando se escriben en el disco.

El valor por defecto es 1, la recomendación general se establece en 1, se asegurará la seguridad de los datos, y sólo cuando 1 se asegurará la coherencia transaccional es.


Eso es todo por este post, y gracias a ti Dime. Bienvenido a hacer preguntas para explorar el intercambio.

Siguiente: Transacción de MySQL y MVCC

Supongo que te gusta

Origin www.cnblogs.com/sx-wuyj/p/12540537.html
Recomendado
Clasificación