Capítulo 1: Arquitectura Mysql y motor de almacenamiento

1.1 Definir base de datos e instancia

¿Cuál es la diferencia entre base de datos e instancia?

Una base de datos es una colección de sistemas operativos físicos u otras formas de archivos (una base de datos es una colección de archivos, una colección de datos organizados según un determinado modelo de datos y almacenados en un almacenamiento secundario). La instancia de la base de datos se utiliza en realidad para operar archivos de la base de datos (la instancia de la base de datos es un programa, una capa de software de administración de datos ubicada entre el usuario y el sistema operativo). La base de datos Mysql consta de subprocesos en segundo plano y un área de memoria compartida. La memoria compartida se puede ejecutar Compartido por subprocesos en segundo plano. Estos dos conceptos a veces se pueden usar juntos, pero los conceptos de los dos son completamente diferentes. En la base de datos Mysql, las instancias y las bases de datos tienen una correspondencia uno a uno, es decir, una instancia corresponde a una base de datos y una La base de datos corresponde a una instancia, pero en el caso de un clúster, puede haber situaciones en las que varias instancias utilicen una base de datos. (Mysql está diseñado como una base de datos con arquitectura de subprocesos múltiples de un solo proceso y la instancia de la base de datos se comporta como un proceso en el sistema)

Cuando se inicia la instancia, la base de datos Mysql leerá el archivo de configuración e iniciará la instancia de la base de datos de acuerdo con los parámetros del archivo de configuración. A continuación se muestra cómo ver dónde está la base de datos MySQL:

mysql --help | grep my.cnf

Insertar descripción de la imagen aquí
Puede ver que la base de datos Mysql lee la configuración en el orden de /etc/my.cnf -> /ect/mysql/my.cnf -> /usr/local/mysql/etc/my.cnf -> ~/.my Archivo .cnf. Si estos archivos de configuración están configurados con los mismos parámetros, prevalecerán los parámetros del último archivo de configuración.

1.2 Arquitectura MySQL

La arquitectura Mysql es la siguiente:

Insertar descripción de la imagen aquí
La arquitectura anterior consta de las siguientes partes:

  • Componente del grupo de conexiones
  • Componentes de servicios y herramientas de gestión.
  • Componente de interfaz SQL
  • Componente del analizador de consultas
  • Componente optimizador
  • Componente de caché
  • Motor de almacenamiento enchufable
  • archivo fisico

Mysql数据库区别于其他数据库的最重要的一个特点就是其插件式的表存储引擎,存储引擎是基于表的不是基于数据库的

1.3 motor de almacenamiento MySQL

El objetivo central de una base de datos es almacenar datos, y el almacenamiento de datos no puede evitar el uso de discos. Entonces, cómo y cómo se almacenan los datos es la clave del almacenamiento. Por lo tanto, el motor de almacenamiento es equivalente al motor de almacenamiento de datos, que impulsa los datos para que se almacenen a nivel de disco. Las capacidades de los diferentes motores de almacenamiento varían mucho.

  • Motor de almacenamiento InnoDB

El motor de almacenamiento conceptual
InnoDB admite transacciones y está diseñado principalmente para aplicaciones de procesamiento de transacciones en línea (OLTP). Se caracteriza por un diseño de bloqueo de fila y soporte para claves externas . Es el motor de almacenamiento predeterminado de Mysql a partir de la versión 5.5.8.
Características

  1. InnoDB logra una alta concurrencia mediante el uso de control de concurrencia de múltiples versiones (MVCC) e implementa cuatro niveles de aislamiento del estándar SQL, siendo el predeterminado el nivel repetible. Al mismo tiempo, se utiliza una estrategia llamada bloqueo de siguiente clave para evitar lecturas fantasma.
  2. El motor de almacenamiento InnoDB proporciona funciones de alto rendimiento y alta disponibilidad, como almacenamiento en búfer de inserción, escritura secundaria, índices hash adaptativos y lectura anticipada.
  3. Para el almacenamiento de datos en tablas, InnoDB utiliza un método de agregación, por lo que cada tabla se almacena en el orden de la clave principal. Si la clave principal no se especifica explícitamente en la definición de la tabla, el motor de almacenamiento de InnoDB generará un archivo de 6 bytes. ROWID como clave principal.
  • Motor de almacenamiento MyISAM

Concepto
MyISAM es el motor de base de datos predeterminado para MySQL (anterior a la versión 5.5), que fue mejorado desde los primeros ISAM. Aunque el rendimiento es excelente, tiene una desventaja: no admite el procesamiento de transacciones.

Características

  1. Una característica distintiva del motor de almacenamiento MyISAM es que su grupo de caché solo almacena en caché archivos de índice, no archivos de datos.
  2. La tabla del motor de almacenamiento MyISAM consta de MYD y MYI, MYD se usa para almacenar archivos de datos y MYI se usa para almacenar archivos de índice.
  3. La tabla del motor de almacenamiento MyISAM y la base de datos Mysql solo almacenan en caché sus archivos de índice, y el propio sistema operativo completa el almacenamiento en caché de los archivos de datos.
  • motor de almacenamiento NDB

El
motor de almacenamiento NDB conceptual es un motor de almacenamiento en clúster, similar al clúster RAC de ORACLE. Su arquitectura de clúster estructural no compartida puede proporcionar alta disponibilidad.

Características

  1. Todos los datos se colocan en la memoria (los datos no indexados se pueden colocar en el disco a partir de 5.1), por lo que la búsqueda de datos de clave principal es extremadamente rápida y el rendimiento de la base de datos se puede mejorar linealmente agregando nodos de almacenamiento de datos NDB (Nodo de datos ), que es altamente eficiente. Sistema de clúster disponible y de alto rendimiento.
  2. La operación de conexión del motor de almacenamiento NDB se completa en la capa de la base de datos MYSQL, no en el motor de almacenamiento. Esto significa que las operaciones de unión complejas requieren una gran sobrecarga de red, por lo que la velocidad de consulta es muy lenta.

1. 4 preguntas frecuentes

  • ¿Mysql admite la indexación de texto completo?

Respuesta: soporte

  • ¿La base de datos Myslq es rápida porque no admite transacciones?

Respuesta: ¡Mal! Aunque el motor de almacenamiento MyISAM de MySQL no admite transacciones, InnoDB sí.

  • ¿Caerá drásticamente el rendimiento de Mysql cuando el volumen de datos de la tabla supere los 10 millones?

Respuesta: ¡No! MySQL es una base de datos, no un archivo. A medida que aumenta el número de filas de datos, el rendimiento disminuirá, pero estas disminuciones no son lineales. Si el usuario elige el motor de almacenamiento correcto y la configuración correcta, MySQL puede soportar más datos.
数据库和传统系统文件的区别是在于数据库支持事务

1.5 Sintaxis de operación relacionada con el motor de almacenamiento

  • Ver los motores de almacenamiento actualmente soportados por la base de datos Mysql
show engines\G;

Insertar descripción de la imagen aquí

1.6 Conectarse a MySQL

连接Mysql操作是一个连接进程和Mysql数据库实例进行通信

  • TCP/IP

El método de socket TCP/IP es el método proporcionado por la base de datos Mysql en cualquier plataforma y también es el método más utilizado en la red. Este método establece una solicitud de conexión basada en red a través de una conexión TCP/IP.

mysql -h127.0.0.1 -u david -p 

Nota: Al conectarse a una instancia de MYSQL a través de TCP/IP, la base de datos MYSQL verificará una vista de permisos en línea para determinar si la IP del cliente que inició la solicitud se está ejecutando y conectada a la instancia de Mysql.

use mysql;
select host,user from user;

Insertar descripción de la imagen aquí

Los cuatro usuarios de la tabla solo pueden conectarse a la instancia de MySQL localmente a través de localhost.

  • Canalizaciones con nombre y memoria compartida

Cuando se utiliza la comunicación por tubería, mysql requiere opciones habilitadas en el archivo de configuración --enable-named-pipe. En versiones posteriores a MySQL 4.1, MySQL también proporciona un método de conexión de memoria compartida, que se --shared-memoryimplementa agregándolo en el archivo de configuración. --protocol=memorySi desea utilizar el método de conexión de memoria compartida, el cliente Mysql también debe utilizar la opción al conectarse

Supongo que te gusta

Origin blog.csdn.net/qq_43456605/article/details/132757137
Recomendado
Clasificación