mysql detalles anatómicos

En general, MySQL piscina conexión sincrónica + + interacción a largo conexión de comunicación bidireccional (MySQL, pero también corta y conexiones asíncronas)

 

 

El motor de almacenamiento por defecto InnoDB

transacciones soportes, soportes de bloqueo a nivel de fila y de bloqueo de nivel de tabla, el apoyo a la lectura y la escritura no entren en conflicto

 

Seleccione SQL ejecutar una instrucción, el proceso de implementación

 MySQL pre-lectura, el principio de localidad

Dado que los datos de MySQL InnoDB almacenados en el disco es leído desde el disco en la memoria, la página es la unidad más pequeña de sistema operativo Página, Página leer 4K (4K alineadas), pero InnoDB a 16K. Operamos los datos de bases de datos, de hecho, es la primera operación de páginas de datos de la memoria, y luego actualizar los datos en el disco local. Memoria de MySQL, pero no siempre acaba de página por página y las operaciones de lectura, por lo que no innodb mecanismo de caché de memoria --BufferPool

 

BUFFERPOOL

BUFFERPOOL innodb es muy importante mecanismo de caché, suponiendo que la mitad de la base de datos Ben colapso, y cómo ese proceso de recuperación? También tiene el mecanismo de persistencia: registro de rehacer

rehacer registro: InnoDB pertenecen mecanismo, se puede utilizar para copia de seguridad de datos Ben colapso, las transacciones de control (con el uso de registro de deshacer?)

binlog: mysql perteneciente al mecanismo de nivel de sistema, registra DDL (cree gota mesa, etc.), el estado de las operaciones de DML (ABM). Apagado por la función de registro de bin por defecto (más espacio del disco y IO) ps: replicación maestro-esclavo MySQL, sino también mediante el uso de binlog características implementadas.

              1. Para la recuperación de datos, que es una copia de seguridad completa (DDL, DML se registran)

              2. La sincronización maestro-esclavo (esclavo de lectura binlog maestro)

 

Actualización proceso de ejecución de la sentencia

 

estructura del índice MySQL Origen

MySQL estructura de datos de índice B + árbol, evolución de árbol equilibrado binario (demasiado alto y delgado) -> árbol B (tiende a squat) -> B + árbol, árbol B + en comparación con b-árbol es beneficios más obvios:

1.innodb índice de clave principal a los datos completos se almacenan en cada nodo hoja (innodb datos se pone, myisam puso el puntero de dirección de datos), este no hoja nodos huella más pequeña, aumentar el número de IO rendimiento leer cada página, reducir el número de IO (índice secundario] [nodo hoja índice de clave no primaria se almacena en índices secundarios y teclas de índice de clave principal, por lo que el uso de índices secundarios a consulta sería encontrado en las hojas de la clave de índice de clave principal, y luego "retorno de mesa "y caminar a lo largo del índice de clave principal de datos, finalmente, se encuentran en el índice de clave primaria)

2. El nodo de hoja de datos tiene una secuencia de puntero vinculados entre sí, de modo que cuando es el momento para consultar el rango de tamaño de las consultas, sólo tiene que comprobar el valor de un límite donde la posición de la hoja, y luego encontrar los datos de la sección directamente desde los nodos hoja ordenadas.

Extrañas: de vez en cuando también puede ver el índice se puede seleccionar estructuras de datos de hash, pero por lo general no se recomienda. Aunque las operaciones de búsqueda de hash rápido, son O (1), pero la colisión de hash hash y es necesario establecer la estructura del valor hash calculado, lo que lleva a desordenar los datos.

 

MySQL breve archivo de datos

mostrar variables como 'datadir'; ver la ruta de almacenamiento de archivos de datos de base de datos

Podemos ver .ibd * * * .MYI .MYD archivo, que myi, en nombre de los archivos de datos del motor myisam índice de MYD. BID es archivos de datos InnoDB, tenga en cuenta que los archivos de datos InnoDB única, ya que los nodos hoja del índice es poner los datos, por lo que todos en el mismo archivo.

Por lo tanto, el orden es datos de decisión InnoDB almacenados en el índice, y determina el orden físico de los datos almacenados en el índice, el índice se denomina agregación (es decir, primaria índice de clave InnoDB).

Si no existe la tabla de clave principal, no existe un índice único o de otro tipo que? Esta vez va a ser utilizado como una columna oculta _rowid índice agrupado

 

Asuntos artículos

propiedades ACID de una transacción, no hay mucho que decir

confirmación automática

Mucha gente sabe que, por defecto, la línea de comandos, introduzca una instrucción de actualización, que también incluye la transacción. Pero, obviamente, no hay ninguna transacción abierta, es porque confirmación automática por defecto de MySQL en ON. mostrar las variables globales como 'confirmación automática'; ( mostrar dicho sea de paso variables globales como 'tx_isolation'; para ver el nivel de aislamiento por defecto)

De hecho, la esencia de transacción, es nuestra operación de SQL en primer lugar por escrito en las tablas temporales que se generan en el espacio de memoria de un invisible, tablas temporales se compara con la mesa real, mediante la comprobación para ver si, a través de la presentación. Nos confirmar la transacción manualmente, de hecho, el control de la tabla temporal para comparar y presentar el proceso.

 

Tres problemas de concurrencia de transacciones

Cuatro nivel de aislamiento de la transacción

Sólo Oracle RC y nivel de aislamiento Serialiable.

Selección Tipo:

Por favor utilice Proyecto Internet: Lectura confirmada (Leer Commited) este nivel de aislamiento!

El tipo básico de bloqueo InnoDB

De hecho, la cerradura, la cerradura es un (clave principal y no existe ningún índice? De hecho, no existe una tabla no tiene índices, suponiendo que no hay clave principal, habrá una _rowid columna oculta como un índice) de índice, si el selecto * donde XX para la actualización la consulta no tiene el índice (tabla recuerdo) dará lugar a bloquear toda la tabla, tratar de evitar esta situación.

seleccionar de bloqueos de registro de actualización, pero el efecto real no lo está bloqueado fuera de la línea de investigación, pero bloqueado en la fila correspondiente a la consulta al índice

begin;
select * from t_stu where s_class = '213' and s_name = '李四g' for update;

//前提:s_name是二级索引,s_class只是一般字段
//因为没有相应的s_class记录,所以查询结果为空,但实际上会单独锁定s_name = '李四g'这行数据

Por supuesto, el bloque argumento del código no es exacta, por criterios de actualización de consulta supuesto es que el rango del intervalo, entonces habrá otro bloqueo de línea de referencia (distancia de bloqueo, el algoritmo de bloqueo de intervalo, están interesados ​​ir MySQL detalles anatómicos ver vídeo de la sección III) .

 

Publicado 21 artículos originales · ganado elogios 9 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/a5552157/article/details/104336527
Recomendado
Clasificación