[] Sistema de base de datos MySQL, motor, mecanismo de bloqueo

A, MySQL arquitectura lógica

1, la estratificación global

  • La capa de conexión
    • Establecer una conexión de servicio con el cliente
    • Completar algún proceso de conexión, autorización y autenticación y soluciones de seguridad relacionados
    • Se introduce el concepto de un conjunto de conexiones en la capa
  • capa de servicio
    • La prestación de servicios básicos
    • Realizar las interfaces de copia en caché completa sql, consulta, análisis y optimización parte de SQL y funciones incorporadas
    • Todas las funciones del motor de almacenamiento a través de se realizan en esta capa
    • Resolver las consultas y crear el poder analítico correspondiente, y la optimización completa, generan la acción apropiada
    • La asignación racional de caché interna, problema de optimización para resolver un gran número de operaciones de lectura
  • capa del motor
    • MYSQL realmente responsable para el almacenamiento y recuperación de datos a través de la API de motor de almacenamiento para comunicarse
    • Diferentes diferentes características del motor de almacenamiento
  • capa de almacenamiento
    • El archivo de datos operativa importante almacenada en un sistema de archivos del ordenador, terminado en el motor interactivo

2, la arquitectura lógica de la fig.

Aquí Insertar imagen Descripción

3, la arquitectura jerárquica lógica

Aquí Insertar imagen Descripción

4 beneficios, lógica jerárquica

  • 1. clara distribución de funciones, donde el problema es dónde encontrar
  • 2. El plug-in motor de almacenamiento, las tareas del sistema de procesamiento de consultas y otras tareas han sido separados de los datos de fase extracto
  • 3. Usted puede elegir el motor de almacenamiento derecha como exigencias necesarias y servicios de oficina

En segundo lugar, el motor de almacenamiento

1, el motor de almacenamiento concepto

  • de datos de MySQL en una variedad de diferentes tecnologías almacenados en el archivo (o memoria) en el.
  • Cada una de estas tecnologías tecnología utiliza un mecanismo de almacenamiento diferente, técnicas de indexación, nivel de bloqueo y, finalmente, ofrecen una amplia gama de diferentes funciones y capacidades.
  • Al elegir diferentes técnicas, se puede obtener una velocidad extra o funcionalidad, lo que mejora la funcionalidad general de su aplicación.
  • Estas diferentes tecnologías y que apoyan las funciones relacionadas fueron llamados en el motor de almacenamiento de MySQL

Ver el motor de corriente utilizada

show engines;       #查看当前版本中默认支持的数据库引擎

show variables like '%storage_engine';     #查看当前数据库使用的引擎
  1. InnoDB

    El motor de base de datos transaccional preferida, el soporte para tablas transaccionales (ácido), soportes de bloqueo de filas y las claves externas, InnoDB es el motor de MySQL por defecto.

    InnoDB principales características son:

    1. InnoDB proporciona MySQL con un con un commit, rollback, las capacidades de recuperación de choque de motor de almacenamiento transacción segura.
    2. InnoDB está diseñado para manejar grandes cantidades de datos diseñados para el máximo rendimiento. Su eficiencia de la CPU es superior a otro motor de base de datos relacional basada en disco.
    3. motor de almacenamiento InnoDB propio grupo de búfer y los datos de índice se pueden almacenar en caché en la memoria.
    4. InnoDB soporta restricciones de integridad de clave externa.
    5. InnoDB se utiliza en numerosos sitios de bases de datos grandes requieren un alto rendimiento
    6. InnoDB soporta el bloqueo de fila
  2. MyISAM

    Sobre la base de motor de almacenamiento ISAM MyISAM, y su expansión. Es uno de los motores de almacenamiento más comúnmente utilizado en la Web, almacenamiento de datos y otros entornos de aplicación. MyISAM tiene una inserción alta, consulta la velocidad, pero no soporta las cosas.

    MyISAM principales características son:

    1. Soporte de archivos grandes mejor
    2. Cuando se elimina, actualizar, insertar, mezclar, producir menos residuos.
    3. Cada índice de la tabla MyISAM es el número máximo de 64, que puede ser cambiado por recompilar. El número máximo de columnas por índice es 16
    4. La longitud máxima clave es de 1000 bytes.
    5. Columnas BLOB y TEXT pueden indexarse
    6. NULL está permitido en la columna del índice, que representa el valor 0 o 1 byte para cada tecla
    7. Todos los valores de las claves numéricas se almacenan en el byte alto primero para permitir un mayor índice de compresión
    8. AUTO_INCREMENT MyISAM actualización columna de la tabla de tipo más rápido que InnoDB tipo AUTO_INCREMENT
    9. Usted puede poner los archivos de datos y archivos de índice en diferentes directorios
    10. Cada columna de caracteres puede tener un diferentes conjuntos de caracteres
    11. Hay longitud de la tabla VARCHAR puede ser fijo o registro dinámico
    12. columnas VARCHAR y CHAR pueden ser de hasta 64 KB
    13. Sólo es compatible con bloqueos de tabla
    14. Soporte FULLTEXT CLAVE (índice de texto completo)
  3. MEMORIA

    motor de almacenamiento de memoria para almacenar datos en la tabla en la memoria, proporcionando un acceso rápido a las consultas y referencias de datos de otras tablas.

  4. BLACKHOLE

    Un agujero negro como el motor es típicamente pseudo-anfitrión, utilizado para aliviar la presión de un maestro mediante el maestro de la arquitectura total de la máquina intermedia,

    Producirá sólo los datos de registro no se guarda.

2, el motor de almacenamiento de elección

En general, la inserción y requisitos de alto rendimiento concurrentes, o necesita la clave externa, o donde el soporte de transacciones necesario es necesario seleccionar el InnoDB,

Inserte menos, consulta más escenas MyISAM prioridad.

3, el motor designado

General añadió durante la construcción de la tabla

create table abc (
    name char(10)
) engine=MyISAM charset=utf8;

create table xyz (
    name char(10)
) engine=InnoDB charset=utf8;

4, InnoDB y MyISAM diferencia en términos de archivo

  1. InnoDB se almacena como una tabla de dos documentos

    • Estructura e índice> tabla de almacenamiento - demo.frm
    • demo.ibd -> almacenar datos, almacenamiento de EII se limita, almacenamiento inadecuado crear automáticamente IBD1, ibd2
  2. La tabla MyISAM se almacena como un archivo de tres

    • Estructura> tabla de almacenamiento - demo.frm
    • demo.myd -> Almacenamiento de datos
    • Índice> Mesa de almacenamiento - demo.myi

Aquí Insertar imagen Descripción

En tercer lugar, el mecanismo de bloqueo

mecanismo de bloqueo del equipo para coordinar múltiples procesos o hilos de acceso simultáneo a un recurso.

cerradura de acceso concurrente para garantizar la coherencia y la eficacia de datos;

conflictos de bloqueo es un factor importante que afecta el rendimiento de acceso simultáneo a la base de datos.

bloqueo de MySQL es concurrente capa de almacenamiento de servidor y un motor de capa de control.

clasificación sustantivo

  • el bloqueo de filas

    • Una cerradura es un nivel de fila de bloqueo de bloqueo de MySQL granularidad más fina, la cerradura sólo para la representación de las líneas de la operación actual.
    • Sólo a nivel de fila de bloqueo de soporte del motor InnoDB.
    • conflicto bloqueo de filas puede reducir en gran medida las operaciones de bases de datos. El tamaño mínimo de la cerradura, pero la cerradura de la más grande de arriba.
    • Características: una gran sobrecarga, bloqueo lenta, habrá un punto muerto; bloqueo de granularidad más pequeña y la más baja probabilidad de conflictos de bloqueo, tiene el más alto grado de concurrencia.
  • bloqueo de nivel de tabla

    • MySQL bloqueo de tabla está bloqueada en el mayor tamaño de una cerradura
    • Para bloquear una tabla completa de la operación actual, es el consumo simple, de bajo recursos, con el apoyo de la mayor parte del motor de MySQL.
    • Características: pequeña sobrecarga, bloqueo rápido; no un punto muerto; bloquear gran tamaño, la probabilidad de conflictos de bloqueo emisión del grado máximo y mínimo de la concurrencia.
  • bloqueo de página

    • Overhead y bloqueo de velocidad entre la mesa y la fila cerraduras; se produce estancamiento; tamaño de partícula entre bloqueo de tablas y fila cerraduras, concurrencia general
    • bloqueos de página desde entonces han sido reemplazados por BDB InnoDB, sólo tratar la cuestión InnoDB bloqueos de tabla MyISAM y bloqueos de registro en el motor BDB
  • bloqueo compartido (bloqueo de lectura)

    • Otros usuarios pueden leer simultáneamente los datos, pero no hay ninguna transacción puede modificar los datos hasta que todos los bloqueos compartidos han sido puestos en libertad.
  • bloqueo exclusivo (bloqueo de escritura)

    • Si los datos de la transacción T a A, más bloqueo exclusivo, otras transacciones no puede ser una ventaja para cualquier tipo de bloqueo.
    • Él lleva a cabo una operación de bloqueo exclusivo no sólo leer los datos, sino también para modificar los datos.
  • El bloqueo optimista (Bloqueo optimista)

    Suponiendo que eso no ocurra violación concurrencia es una violación de las comprobaciones de integridad de datos sólo cuando la operación de confirmación. El bloqueo optimista no resuelve el problema de la lectura sucia.

    El bloqueo optimista, por definición, es muy optimista, recoger datos cada vez que otros no se modifican, por lo que no será bloqueado, pero cuando la actualización se determinará qué otros durante este tiempo no van a actualizar los datos, puede utilizar número de versión mecanismo. El bloqueo optimista es adecuado para los tipos de aplicaciones para leer, por lo que puede mejorar el rendimiento, si la base de datos proporcionada write_condition mecanismos de bloqueo optimista similares son efectivamente prestados similares.

  • El bloqueo pesimista (Bloqueo pesimista)

    Suponga que va a pasar conflicto concurrente, protegiendo todo lo posible violaciónes de integridad de datos operativos.

    El bloqueo pesimista, por definición, es muy pesimista, recogida de datos cada vez que el pensamiento de que otros se modifique, por lo que cada vez que ella tomó los datos serán bloqueados, por lo que la gente quiere tomar estos datos se bloqueará hasta que se hizo la cerradura. Tradicional en el interior base de datos relacional para utilizar una gran cantidad de este mecanismo de bloqueo, como bloqueos de registro, bloqueos de tabla, etc., bloqueo de lectura, bloqueo de escritura, están bloqueados antes de hacer la primera operación.

Aquí Insertar imagen Descripción

operación de bloqueo de tabla

Sesgada a favor de motor de almacenamiento myisam (también innodb en), pequeña sobrecarga, bloqueado rápido, sin punto muerto, el bloqueo de gran tamaño de partícula, la más alta probabilidad de conflictos de bloqueo, apoyo concurrente para lo peor.

Características: una persona sólo puede leer una tabla, otros se alinean.

Ejemplos

#查看表中有没有被锁
show open tables;

#加上读写锁
lock table stuinfo read; 
lock table stuinfo write;

#解除锁
unlock tables;

Añadir un bloqueo de lectura (bloqueo compartido), cuando es el momento de abrir el estado de bloqueo

  • Entre está conectado el terminal actual
    • Puede utilizar la consulta para consultar la tabla actual, pero no puede realizar otras operaciones
    • No se puede utilizar en otras mesas
  • En otro terminal operativo
    • Puede ser utilizado para consultar las tablas de consulta actuales, puede utilizar otras funciones, pero se cerrará después de que el bloqueo ha sido bloqueado a la aplicación de
    • No se puede utilizar en otras mesas

Adición de bloqueo de escritura (bloqueo exclusivo), cuando es el momento de abrir el estado de bloqueo

  • Cuando la corriente del puente de terminales
    • Se pueden realizar consultas y manipular la tabla activa en ese momento está bloqueado
    • No se puede bloquear desde la consulta activa (bloqueo automático) otras tablas
  • En otro terminal operativo
    • Puede utilizar la consulta para consultar la tabla actual, pero se cerrará después de que el bloqueo ha sido bloqueado a la aplicación de
    • Se puede utilizar otro tipo de operaciones de tipo de acción, pero se cerrará después de que el bloqueo ha sido bloqueado a la aplicación de

bloqueo de registro

motor de almacenamiento Bias InnoDB, gran sobrecarga, el bloqueo lento, habrá un punto muerto; bloqueo el tamaño más pequeño, la probabilidad de conflictos de bloqueo de la parte inferior, tienen el más alto grado de concurrencia.

InnoDB y MyISAM mayor diferencia: En primer lugar, los servicios de apoyo, y en segundo lugar, mediante un bloqueo de filas.

transacciones simultáneas en las nuevas cuestiones específicas

  • 1. Actualización problema de pérdida de

Dos o más transacciones seleccionar la misma fila, y luego selecciona en función del valor inicial para actualizar la fila, ya que cada transacción no es consciente de la existencia de otras transacciones, perdido problema de actualización se produce, la última actualización que cubre las otras empresas hacen actualizaciones.

  • 2. lectura sucia
  • 3. lectura no repetible
  • 4. magia de la lectura

Ver nivel de aislamiento

  • La lectura no confirmada (lectura no confirmada), otra es una transacción puede leer datos de transacciones no utilizadas
  • Leer cometido (lectura confirmada de lectura, no repetible), una transacción tiene que esperar a leer los datos después de la transacción se confirma otra
  • Lectura repetible (repetible, de alta eficiencia, tiene varios problemas pueden prevenirse, y el nivel predeterminado), es decir, al comienzo de los datos de lectura abierta (transacción), ya no se permite modificar el funcionamiento.
  • El Serializable (serializado, ineficiente, muy eficaz, no es el nivel por defecto), en este nivel, la ejecución de la orden de serialización de transacciones para evitar sucia lee, no repetible de lectura y lectura fantasma.
select @@global.tx_isolation,@@tx_isolation;

Ajuste del nivel de aislamiento

Necesitamos ser presentada en el momento de la transacción de prueba automática a su fin, el defecto se presenta de forma automática en una fecha posterior asuntos mysql5.5

show variables like 'autocommit';    #查看事务的开启状态

set autocommit = 0    #0是关闭,1是开启
#全局设置
set global transaction isolation level Repeatable read; 

#当前会话终端设置
set session transaction isolation level Repeatable read;

Y el uso de un espacio de bloqueo de registro cerraduras

Publicados 116 artículos originales · ganado elogios 10 · vistas 1365

Supongo que te gusta

Origin blog.csdn.net/weixin_44727383/article/details/104954622
Recomendado
Clasificación