Una imagen para obtener la arquitectura MySQL

Para comprender el mecanismo operativo de mysql, primero debe tener cierta comprensión de la arquitectura mysql.

Recientemente, debido a algunas cosas, me han golpeado mucho, siento que no importa cuánto lo intente, mi carrera será así. Así que de repente perdí mi pasión original por la investigación de tecnología y los blogs.

Pero de todos modos, el camino lo elijo yo mismo, y tengo que terminarlo cuando lloro. Además, parece que no hay otra forma.

arquitectura mysql

Inserte la descripción de la imagen aquí

En la figura, se puede ver que MySQL consta de las siguientes partes:

  • Componente de grupo de conexiones
  • Servicios de gestión y componentes de herramientas
  • Componentes de la interfaz SQL
  • Componente Analizador de consultas
  • Componente optimizador
  • Componente de caché
  • Motor de almacenamiento enchufable
  • Archivo físico

Nota: Una
de las características más importantes que distingue la base de datos MySql de otras bases de datos es su motor de almacenamiento de tablas de complementos .
Nota: El
motor de almacenamiento está basado en tablas, no en bases de datos.

Según esta función, la mayoría de las bases de datos comerciales del proyecto deben admitir atributos de transacción, por lo que se utiliza el motor de almacenamiento InnoDB. Pero para aquellas tablas con características de solo lectura, podemos considerar usar el motor de almacenamiento MyISAM, para que no destruya las características de transacción de la base de datos.

Descripción detallada

La capa superior es el componente de conexión. El siguiente servidor está compuesto por un grupo de conexiones, herramientas y servicios de administración, interfaz SQL, analizador, optimizador, caché, motor de almacenamiento y sistema de archivos.

Grupo de conexiones : dado que lleva mucho tiempo establecerlo cada vez, la función del grupo de conexiones es almacenar en caché estas conexiones, y puede usar directamente las conexiones establecidas la próxima vez para mejorar el rendimiento del servidor.
Herramientas y servicios de administración: herramientas de administración y control del sistema, como respaldo y recuperación, replicación de Mysql, clústeres, etc.
Interfaz SQL : acepta los comandos SQL del usuario y devuelve los resultados que los usuarios necesitan consultar. Por ejemplo, seleccionar de es para llamar al
analizador de consultas de la interfaz SQL : cuando el comando SQL se pasa al analizador, el analizador lo verificará y analizará (permisos, estructura gramatical). Las
funciones principales:
a. Descomponer la declaración SQL en una estructura de datos y pasar esta estructura En los pasos siguientes, la transmisión y el procesamiento subsiguientes de las sentencias SQL se basan en esta estructura.
B. Si se encuentran errores en la composición de descomposición, significa que la sentencia SQL es un
optimizador de consultas poco razonable : optimizador de consultas, sentencia SQL antes de la consulta Utilizará el optimizador de consultas para optimizar la consulta. Utiliza la estrategia ** "select-projection-join" ** para realizar consultas.
Se puede entender con un ejemplo: select uid, name from user where gender = 1;
Esta consulta de selección primero selecciona en función de la declaración where, en lugar de consultar primero todas las tablas y luego realizar un filtrado de género.
Esta consulta de selección se basa en uid y nombre. Proyección de atributos, en lugar de filtrar todos los atributos más tarde,
una estas dos condiciones de consulta para generar el resultado final de la consulta.

Además, el optimizador de consultas también puede controlar a qué índice consulta una instrucción SQL y ajustar automáticamente el orden de las condiciones de la instrucción SQL para cumplir con las reglas del principio de coincidencia más a la izquierda del índice compuesto.

Caché : Caché de consultas ( eliminado después de la versión de MySQL 8.0 ). Si el caché de consultas tiene un resultado de consulta coincidente, la declaración de consulta puede ir directamente a la caché de consultas para recuperar datos.
El extremo frío de los datos se desborda a través del algoritmo LRU y las páginas de datos que deben actualizarse en el disco a tiempo en el futuro se denominan páginas sucias.
Este mecanismo de almacenamiento en caché se compone de una serie de pequeños cachés. Como caché de tablas, caché de registros, caché de claves, caché de permisos, etc.

No se recomienda utilizar la caché para consultas MySQL, ya que la invalidación de la caché de consultas puede ser muy frecuente en escenarios comerciales reales. Si actualiza una tabla, se borrarán todas las cachés de consultas en esta tabla.
Por lo tanto, generalmente no recomendamos usar el almacenamiento en caché de consultas en la mayoría de los casos.
Después de la versión de MySQL 8.0, se eliminó la función de caché. El funcionario cree que esta función es menor en los escenarios de aplicación reales, por lo que simplemente se elimina.

Motor de almacenamiento enchufable : el motor de almacenamiento es una forma de administrar los datos operativos (almacenar datos, cómo actualizarlos, consultar datos, etc.). Debido a que el almacenamiento de datos en una base de datos relacional se almacena en forma de tabla, el motor de almacenamiento también se puede llamar tipo de tabla (es decir, el tipo de almacenamiento y operación de esta tabla)

Archivos
físicos : los archivos físicos incluyen: archivos de registro, archivos de datos, archivos de configuración, archivos pid, archivos de socket, etc.

El flujo de ejecución de una declaración de consulta

Habiendo dicho todo lo anterior, ¿cómo se ejecuta una instrucción SQL? De hecho, nuestro sql se puede dividir en dos tipos, uno es de consulta y el otro es de actualización (agregar, actualizar, eliminar). Primero analizamos la declaración de la consulta, la declaración es la siguiente:

select * from tb_student  A where A.age='18' and A.name=' 张三 ';

Combinado con la descripción anterior, analizamos el flujo de ejecución de esta declaración:
1. Establecer una conexión
2. Llamar a la interfaz SQL
3. Autenticación: primero verifique si la declaración tiene permiso, si no hay permiso, devuelva un mensaje de error directamente
4. Juicio de caché: si Si tiene permiso, antes de MySQL8.0, primero se consultará la caché. Utilice esta instrucción SQL como clave para consultar si hay un resultado en la memoria. Si hay una caché directa, si no, vaya al siguiente paso.
5. Analizar la declaración SQL:
realice un análisis léxico a través del analizador para extraer los elementos clave de la declaración SQL. Por ejemplo, extraer la declaración anterior es la selección de consulta, y la tabla que se consultará se llama tb_student, y todas las columnas deben consultarse. Las condiciones de la consulta son para esta tabla. id = '1'. Luego juzgue si hay errores gramaticales en la declaración sql, como si las palabras clave son correctas, etc., si la verificación no es un problema, continúe con el siguiente paso.
6. Optimización de consultas Realice sql en la instrucción sql.
A continuación, el optimizador determinará el plan de ejecución. La instrucción sql anterior puede tener dos planes de ejecución:
a. Primero consulte al estudiante llamado "Zhang San" en la tabla de estudiantes y luego determine si La edad es 18.
b) Primero busque al estudiante de 18 años entre los estudiantes y luego busque al estudiante llamado "Zhang San".
Luego, el optimizador selecciona la solución más eficiente basándose en su propio algoritmo de optimización (el optimizador cree que a veces puede no ser la mejor). Después de confirmar el plan de ejecución, está listo para iniciar la ejecución.

7. Ejecute la consulta y devuelva el resultado.

Descripción del archivo físico

1. Registro de
Inserte la descripción de la imagen aquí
errores del archivo de registro Resolución de problemas del registro de errores /var/log/mysqld.log [habilitado de forma predeterminada]
Registro de la bandeja Copia de seguridad del registro binario Copia de seguridad incremental DDL DML DCL
Registro de retransmisión Registro de retransmisión Recepción de replicación
Registro lento Registro lento Consulta lenta Consulta de ajuste de registro El tiempo excede el valor especificado

La ubicación predeterminada del archivo de registro:
Registro de errores
log-error = / var / log / mysqld.log
Registro binario
log-bin = / var / log / mysql-bin / bin.log
server-id = 2
Consulta lenta después de la versión 5.7.x Registro
slow_query_log = 1 | 0
slow_query_log_file = / var / log / mysql-slow / slow.log
long_query_time = 3

2. Si el archivo de configuración
/etc/my.cnf -> / etc / mysql / my.cnf -> / usr / etc / my.cnf—> ~ / .my.cnf
entra en conflicto, prevalecerá la última lectura
[ El grupo mysqld] incluye los parámetros de inicialización cuando se inicia el servicio mysqld. El
grupo [cliente] contiene los parámetros que pueden ser leídos por el programa de herramientas cliente, además de otros grupos de parámetros específicos para cada software cliente, etc.

3. Archivo de datos
1.
No importa qué motor de almacenamiento sea el archivo .frm , cada tabla tendrá un archivo .frm con el nombre del nombre de la tabla. La información de metadatos (meta) relacionada con la tabla se almacena en este archivo, incluida la estructura de la tabla Información de definición, etc.
2. El archivo .MYD está
dedicado al motor de almacenamiento myisam y almacena los datos de la tabla myisam. Cada tabla myisam tendrá un archivo .MYD correspondiente, que también se almacena en el directorio de su propia base de datos
3. El archivo .MYI
también está dedicado al motor de almacenamiento myisam y almacena la información relacionada con el índice de la tabla myisam. Para el motor de almacenamiento myisam, el contenido que se puede almacenar en caché se deriva principalmente del archivo .MYI.
Cada tabla myisam corresponde a un archivo .MYI, y su ubicación de almacenamiento es la misma que la de los
archivos .frm y
.MYD4 . Los archivos .ibd y los archivos ibdata almacenan archivos de datos innoDB (incluidos los índices). El motor de almacenamiento innoDB tiene dos métodos de espacio de tabla: espacio de tabla exclusivo y espacio de tabla compartido.
Espacio de tabla exclusivo: use archivos .ibd para almacenar datos, y cada tabla tiene un archivo .ibd, que se almacena en la misma ubicación que los datos myisam.
Espacio de tabla compartido: utilice archivos .ibdata, y todas las tablas comparten uno (o más, autoconfigurados) archivos ibdata.

ibdata1: espacio de tabla del sistema (archivo de datos) deshacer segmento
ib_logfile0 grupo de archivos
redlog ib_logfile1

Archivo db.opt Este archivo estará presente en todas las bibliotecas autoconstruidas y registra el juego de caracteres predeterminado y las reglas de verificación de esta biblioteca.

4. El archivo pid El archivo
pid es un archivo de proceso de la aplicación mysqld en el entorno Unix / Linux.Como muchos otros programas de servidor Unix / Linux, almacena su propio ID de proceso.

5. Archivo Socket El archivo
Socket solo está disponible en el entorno Unix / Linux En el entorno Unix / Linux, los usuarios pueden usar Unix Socket directamente para conectarse a mysql en lugar de a la red TCP / IP.

Distinguir base de datos, instancia de base de datos, servidor de base de datos

Base de datos:
una colección de archivos de datos en el sistema operativo o almacenamiento. En la base de datos mysql, los archivos de la base de datos pueden ser archivos que terminan en * .frm, .MYD, .MYI, * .ibd, etc. Los tipos de archivos son diferentes para los diferentes motores de almacenamiento.
Más sesgado hacia el almacenamiento de archivos.
La instancia de la base de datos (instancia)
consta de procesos o subprocesos en segundo plano y un área de memoria compartida. La memoria compartida se puede compartir ejecutando subprocesos en segundo plano.
Hay que prestar atención: la instancia de la base de datos es la base de datos operativa real.
Más sesgado hacia las operaciones de la aplicación.

La relación entre la base de datos y la instancia de la base de datos: por lo
general, existe una correspondencia uno a uno entre una instancia de base de datos y una base de datos, es decir, una instancia de base de datos corresponde a una base de datos;
sin embargo, hay varias instancias de base de datos en un entorno de clúster que comparten una base de datos.
Por ejemplo, una tabla en una base de datos se puede distribuir en varias instancias de base de datos después de una estrategia de división de tablas.

La instancia de la base de datos se refiere a la aplicación de la base de datos y la base de datos se refiere a la base de datos creada en la instancia de la base de datos.
Por ejemplo, si se implementa una aplicación mysql del puerto 3306 en el servidor, entonces es una instancia de base de datos;
si continúa implementando una aplicación mysql de 3309, se implementan dos instancias de msql en un servicio.
En la instancia de mysql en el puerto 3306, crear una base de datos llamada orden significa crear una base de datos.

El servidor de la base de datos (servidor de la base de datos)
implementa el servidor donde está instalada la instancia de la base de datos.

para resumir

1. La arquitectura mysql incluye principalmente componentes de grupo de conexiones, servicios de administración y componentes de herramientas, componentes de
interfaz SQL, componentes de analizador de consultas, componentes de optimizador, componentes de caché, motores de almacenamiento de complementos y
archivos físicos.
2. Analizar el proceso de ejecución de una declaración de consulta: establecer una conexión— "verificación de permisos—" caché de consultas— "analizador—" optimizador— "verificación de permisos— motor" ejecutor "
3. Distinguir entre bases de datos, instancias de bases de datos y bases de datos servidor

[Momento feliz]
Inserte la descripción de la imagen aquí

Más emocionante, sígueme.
Leyenda: sigue al anciano para aprender java

Supongo que te gusta

Origin blog.csdn.net/w1014074794/article/details/107142463
Recomendado
Clasificación