Charla general sobre MySQL (1)

La siguiente es una introducción a MySQL. El contenido del documento es relativamente básico. Solo está diseñado para el funcionamiento y algunos principios. Omítalo.
Deja de decir tonterías, ¡vamos!

15.jpg

1. Introducción a la arquitectura MySQL

1-Introducción a MySQL

descripción general

MySQL es un sistema de gestión de bases de datos relacionales desarrollado por MySQL AB en Suecia y actualmente pertenece a Oracle Corporation.

MySQL es un sistema de administración de bases de datos relacionales que mantiene los datos en diferentes tablas en lugar de colocar todos los datos en un gran almacén, lo que aumenta la velocidad y mejora la flexibilidad.

MySQL es de código abierto, por lo que no necesita pagar extra.

MySQL admite grandes bases de datos. Puede manejar grandes bases de datos con decenas de millones de registros. MySQL utiliza formularios de lenguaje de datos SQL estándar.

MySQL se puede permitir en varios sistemas y es compatible con varios idiomas. Estos lenguajes de programación incluyen C, C++, Python, Java, Per, PHP, Eifel, Ruby y Tcl, entre otros. Mysql tiene un buen soporte para PHP, que actualmente es el lenguaje de desarrollo web más popular.

MySQL admite grandes bases de datos y almacenes de datos con 50 millones de registros. El archivo de tabla del sistema de 32 bits puede admitir un máximo de 4 GB y el sistema de 64 bits admite un archivo de tabla máximo de 8 TB. Mysql se puede personalizar, utilizando el acuerdo GPL, puede modificar el código fuente para desarrollar su propio sistema MySQL.

Instalación de 2 RPM

①Dirección de descarga

Dirección de descarga del sitio web oficial de la versión de MySQL Linux (CentOS)

② Compruebe si el sistema actual ha instalado MySQL

  • Comando de consulta: rpm -qa|grep -i mysql
  • Borrar comando: rpm -e Nombre del paquete RPM (el nombre es el nombre detectado por el comando anterior)`

No instalado:

ya instalado

③Instale el servidor MySQL (tenga en cuenta el aviso)

  • Comando de instalación: rpm -ivh Nombre del paquete RPM

Si se informa un error, se puede decir que falta el paquete:

rpm -ivh MySQL-server-5.5.48-1.linux2.6.i386.rpm --nodeps --force  resuelve las dependencias y fuerza la instalación

yum -y instalar glibc.i686
yum -y instalar libncurses.so.5
yum -y instalar libaio.so.1
yum -y instalar libz.so.1

④ Instalar el cliente MySQL

  • Comando de instalación: rpm -ivh Nombre del paquete RPM

rpm -ivh MySQL-server-5.5.48-1.linux2.6.i386.rpm --nodeps --force Resuelve la relación de dependencia y fuerza la instalación

Ver los usuarios de MySQL y los grupos de MySQL creados durante la instalación de MySQL

  • gato /etc/contraseña |grep mysql
  • gato /etc/grupo |grep mysql

O puede ejecutar el comando mysqladmin --version.

o ps -ef | grep mysql

⑤Arranque y suspensión del servicio MySQL

  • servicio mysql detener/reiniciar/iniciar
  • ps -ef | grep mysql vista

Iniciar el servicio mysql start puede informar un error

Debido a este problema de archivo:
mv /etc/my.cnf /etc/my.cnf.bak

⑥Configuración de contraseña ROOT y arranque automático

Después de que se inicie el servicio mysql, inicie la conexión.

Conexión exitosa por primera vez

  • Ingrese el comando mysql  porque el usuario raíz inicial no tiene contraseña, por lo que puede iniciar sesión directamente ingresando mysql
  • comando de salida salida

Siga las indicaciones en Instalación del servidor para cambiar la contraseña de inicio de sesión

  • /usr/bin/mysqladmin -u contraseña de raíz codificadorxz

La contraseña en realidad corresponde a la tabla de usuario en la base de datos mysql en mysql:

También puede ser específico para IP 192.168.1.%

Servicio mysql de inicio automático

⑦ Modificar la ubicación del archivo de configuración

  • cp /usr/share/mysql/my-huge.cnf /etc/my.cnf

¿ Por qué mysql lee /etc/my.cnf por sí mismo ?

Abra mysql.server y encontrará que conf=/etc/my.cnf está completamente escrito.

enlace

Compruebe el directorio de instalación en Linux ps -ef | grep mysql.

⑧ Modificar juego de caracteres

Ver conjunto de caracteres

  • mostrar variables como 'carácter%";
  • mostrar variables como '%char%";

De forma predeterminada, tanto el cliente como el servidor usan latin1, por lo que se distorsionará.

Modificar juego de caracteres y ruta de almacenamiento de datos

  • vim /etc/my.cnf

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">[client]
#password <span style="color:#ab5656">=</span> your_password
port   <span style="color:#ab5656">=</span> <span style="color:#880000">3306</span>
socket    <span style="color:#ab5656">=</span> <span style="color:#ab5656">/</span>var<span style="color:#ab5656">/</span>lib<span style="color:#ab5656">/</span>mysql<span style="color:#ab5656">/</span>mysql.sock
<span style="color:#0000ff">default</span><span style="color:#ab5656">-</span><span style="color:#a31515">character</span><span style="color:#ab5656">-</span><span style="color:#0000ff">set</span><span style="color:#ab5656">=</span>utf8
[mysqld]
port   <span style="color:#ab5656">=</span> <span style="color:#880000">3306</span>
character_set_server<span style="color:#ab5656">=</span>utf8
character_set_client<span style="color:#ab5656">=</span>utf8
socket  <span style="color:#ab5656">=</span> <span style="color:#ab5656">/</span>var<span style="color:#ab5656">/</span>lib<span style="color:#ab5656">/</span>mysql<span style="color:#ab5656">/</span>mysql.sock
<span style="color:#0000ff">collation</span><span style="color:#ab5656">-</span>server<span style="color:#ab5656">=</span>utf8_general_ci
#(注意linux下mysql安装完毕是默认:表名区分大小写;<span style="color:#880000">0</span>:区分大小写;<span style="color:#880000">1</span>:不分区大小写)
lower_case_table_names<span style="color:#ab5656">=</span><span style="color:#880000">1</span>
#(设置最大连接数,默认为<span style="color:#880000">151</span>,MySQL服务器允许的最大的连接数为<span style="color:#880000">16384</span>)
max_connections<span style="color:#ab5656">=</span><span style="color:#880000">1000</span>
[mysql]
<span style="color:#0000ff">default</span><span style="color:#ab5656">-</span><span style="color:#a31515">character</span><span style="color:#ab5656">-</span><span style="color:#0000ff">set</span> <span style="color:#ab5656">=</span> utf8
</code></span></span>

Reiniciar la base de datos

  • inicio del servicio mysql
  • detener el servicio mysql

Después de volver a conectar, vuelva a crear la base de datos y use la nueva biblioteca, y luego intente volver a crear la tabla

3-Archivo de configuración de MySQL

archivo de configuración principal

bin de registro de registro binario

  • para replicación maestro-esclavo

Error de registro de registro de error

  • El valor predeterminado es desactivado, registrando advertencias graves y mensajes de error, información detallada sobre cada inicio y apagado, etc.

Registro de consultas

  • Está deshabilitado de forma predeterminada y registra la declaración SQL de la consulta. Si está habilitado, el rendimiento general de mysql se reducirá, porque el registro también consume recursos del sistema.

archivo de datos

  • dos sistemas

    • ventanas
      • mysqldespués de la entradaselect @@database;
    • linux
      • Ruta predeterminada: /var/lib/mysql
  • archivo frm (formulario)

    • estructura de la mesa de almacenamiento
  • archivo myd (mis datos)

    • Almacenar datos de la tabla
  • archivo myi (mi índice)

    • índice de la tabla de almacenamiento

como configurar

  • Windows - archivo my.ini
  • Linux - archivo /etc/my.cnf

4- Introducción a la Arquitectura Lógica de MySQL

Visión general

En comparación con otras bases de datos, MySQL es un poco diferente, su arquitectura se puede aplicar y desempeñar un buen papel en muchos escenarios diferentes. Se refleja principalmente en la arquitectura del motor de almacenamiento.La arquitectura del motor de almacenamiento enchufable separa el procesamiento de consultas de otras tareas del sistema y del almacenamiento y extracción de datos. Esta arquitectura puede seleccionar un motor de almacenamiento adecuado según las necesidades comerciales y las necesidades reales.

1. Capa de conexión

La capa superior son algunos servicios de cliente y de conexión, incluida la comunicación local sock y la mayoría de las comunicaciones tipo tcplip basadas en herramientas cliente/servidor. Principalmente completa algunos procesos de conexión similares, autenticación de autorización y soluciones de seguridad relacionadas. En esta capa, se introduce el concepto de grupo de subprocesos para proporcionar subprocesos para los clientes que pasan la autenticación y el acceso seguro. En esta capa también se pueden implementar enlaces seguros basados ​​en SSL. El servidor también verifica la autoridad operativa que tiene para cada cliente que accede de forma segura.

2. Capa de servicio

La arquitectura de segundo nivel completa principalmente funciones de servicio más o menos básicas, como la interfaz SQL, la consulta de caché, el análisis y la optimización de SQL y la ejecución de algunas funciones integradas. Todas las funciones del motor de almacenamiento cruzado también se implementan en esta capa, como procedimientos y funciones. En esta capa, el servidor analizará la consulta y creará un árbol de análisis interno correspondiente, y lo optimizará en consecuencia, como determinar si el orden de la tabla de consulta utiliza un índice, etc., y finalmente generará la operación de ejecución correspondiente. Si es una declaración de selección, el servidor también consultará el caché interno. Si el espacio de caché es lo suficientemente grande, el rendimiento del sistema se puede mejorar en gran medida en el entorno de resolución de una gran cantidad de operaciones de lectura.

3. Capa motor

La capa del motor de almacenamiento, el motor de almacenamiento es realmente responsable del almacenamiento y la extracción de datos en MySQL, y el servidor se comunica con el motor de almacenamiento a través de la API. Los diferentes motores de almacenamiento tienen diferentes funciones para que podamos elegir de acuerdo con nuestras necesidades reales MyISAM e InnoDB se presentarán más adelante.

4. Capa de almacenamiento

La capa de almacenamiento de datos almacena principalmente datos en el sistema de archivos que se ejecuta en el dispositivo sin procesar y completa la interacción con el motor de almacenamiento.

  • 1. Conectores

Se refiere a la interacción con SQL en diferentes lenguajes.

  • 2 Servicios de administración y utilidades:

Herramientas de Gestión y Control de Sistemas

  • 3 Grupo de conexiones: grupo de conexiones

Administre las conexiones de usuario almacenadas en caché, el procesamiento de subprocesos, etc. que requieran almacenamiento en caché.
Responsable de monitorear varias solicitudes al servidor MySQL, recibir solicitudes de conexión y reenviar todas las solicitudes de conexión al módulo de administración de subprocesos. A cada solicitud de cliente conectada a MySQL Server se le asignará (o creará) un hilo de conexión para su servicio separado. El trabajo principal del hilo de conexión es ser responsable de la comunicación entre el servidor MySQL y el cliente,
aceptar la solicitud de comando del cliente y transmitir la información del resultado del servidor, etc. El módulo de gestión de subprocesos es responsable de administrar y mantener estos subprocesos de conexión. Incluyendo creación de hilos, caché de hilos, etc.

  • 4 Interfaz SQL: interfaz SQL.

Acepte el comando SQL del usuario y devuelva el resultado que el usuario necesita consultar. Por ejemplo, seleccionar de es llamar a la interfaz SQL

  • 5 Analizador: Analizador.

Cuando el comando SQL se pasa al analizador, será verificado y analizado por el analizador. El analizador está implementado por Lex y YACC y es un script largo.
En MySQL, estamos acostumbrados a llamar a todos los comandos enviados por el cliente al servidor como consulta. En MySQL Server, después de que el hilo de conexión recibe una consulta del cliente, pasará directamente la consulta al responsable especial de clasificar varias consultas. y luego reenviado a cada módulo de procesamiento correspondiente.
Funciones principales:
a. Analizar la semántica y la sintaxis de las sentencias SQL, descomponerlas en estructuras de datos, clasificarlas de acuerdo con diferentes tipos de operaciones y luego realizar reenvíos dirigidos a los siguientes pasos. La transmisión y el procesamiento de las sentencias SQL se basarán en esto. estructurado.
b. Si se encuentra un error en la descomposición y composición, significa que la instrucción sql no es razonable

  • 6 Optimizer: optimizador de consultas.

La instrucción SQL utilizará el optimizador de consultas para optimizar la consulta antes de realizar la consulta. Es optimizar la consulta (sentencia sql) solicitada por el cliente, de acuerdo a la sentencia de consulta solicitada por el cliente y alguna información estadística en la base de datos, analizar en base a una serie de algoritmos para obtener una estrategia óptima y decir lo siguiente programas Cómo obtener el resultado de esta instrucción de consulta (prioridad de orden de consulta SQL de mayor a menor: desde-dónde-agrupar-teniendo-seleccionar-ordenar-por-límite)
Utiliza la estrategia "seleccionar-proyección-unirse" para la consulta.
Se puede entender con un ejemplo: seleccione uid, nombre del usuario donde el género = 1.
Esta consulta de selección se selecciona primero de acuerdo con la instrucción where, en lugar de consultar todas las tablas primero y luego filtrar por género.
Esta consulta de selección se realiza primero de acuerdo con a uid y nombre Proyección de atributos, en lugar de eliminar todos los atributos y luego filtrarlos.
Combine estas dos condiciones de consulta para generar el resultado final de la consulta.

  • 7 Caché y búfer: Caché de consultas.

Su función principal es almacenar en caché el conjunto de resultados devueltos de la solicitud de consulta de clase Select enviada por el cliente a MySQL en la memoria y hacer una correspondencia con un valor hash de la consulta. Después de que ocurra cualquier cambio de datos en la tabla base de los datos obtenidos por la consulta, MySQL invalidará automáticamente el caché de la consulta. En un sistema de aplicaciones con una relación de lectura y escritura muy alta, Query Cache puede mejorar significativamente el rendimiento. Por supuesto, su consumo de memoria también es muy grande.
Si la caché de consultas tiene un resultado de consulta de acierto, la declaración de consulta puede obtener datos directamente de la caché de consultas. 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.

  • 8. Interfaz del motor de almacenamiento

Se puede decir que el módulo de interfaz del motor de almacenamiento es el punto más distintivo en la base de datos MySQL. Entre varios productos de bases de datos, básicamente solo MySQL puede implementar la administración de complementos de su motor de almacenamiento de datos subyacente. Este módulo es en realidad solo una clase abstracta, pero es precisamente porque abstrae con éxito todo tipo de procesamiento de datos que ha logrado las características del motor de almacenamiento conectable de MySQL de hoy.
También se puede ver en la figura que la característica más importante que distingue a MySQL de otras bases de datos es su motor de almacenamiento de tablas de complemento. La arquitectura del motor de almacenamiento del complemento de MySQL proporciona una serie de estándares de gestión y soporte de servicios. Estos estándares no tienen nada que ver con el motor de almacenamiento en sí mismo y pueden ser necesarios para cada sistema de base de datos, como analizadores y optimizadores de SQL. El motor de almacenamiento es Para la realización de la estructura física subyacente, cada desarrollador de motor de almacenamiento puede desarrollar según sus propios deseos.
Nota: El motor de almacenamiento se basa en tablas, no en bases de datos.

5- Introducción al motor de almacenamiento

Ver comandos:

  • Vea qué motores de almacenamiento proporciona mysql
    • Mostrar motores;

  • Ver el motor de almacenamiento predeterminado actual de mysql
    • mostrar variables como '%storage_engine%';
<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">show</span> variables <span style="color:#0000ff">like</span> <span style="color:#a31515">'%storage_engine%'</span>;
<span style="color:#ab5656">+</span><span style="color:#008000">----------------------------------+--------+</span>
<span style="color:#ab5656">|</span> Variable_name                    <span style="color:#ab5656">|</span> <span style="color:#0000ff">Value</span>  <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----------------------------------+--------+</span>
<span style="color:#ab5656">|</span> default_storage_engine           <span style="color:#ab5656">|</span> InnoDB <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> default_tmp_storage_engine       <span style="color:#ab5656">|</span> InnoDB <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> disabled_storage_engines         <span style="color:#ab5656">|</span>        <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> internal_tmp_disk_storage_engine <span style="color:#ab5656">|</span> InnoDB <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----------------------------------+--------+</span>
<span style="color:#880000">4</span> <span style="color:#0000ff">rows</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span>, <span style="color:#880000">1</span> warning (<span style="color:#880000">0.01</span> sec)
</code></span></span>

MyISAM e InnoDB

Alibaba, Taobao, ¿cuál usar?

  • Percona ha mejorado el servidor de base de datos MySQL, que tiene una mejora significativa en la función y el rendimiento en comparación con MySQL. Esta versión mejora el rendimiento de InnoDB en condiciones de alta carga, proporciona algunas herramientas de diagnóstico de rendimiento muy útiles para los administradores de bases de datos; además, hay más parámetros y comandos para controlar el comportamiento del servidor.

  • La compañía ha creado un nuevo motor de almacenamiento llamado xtradb que puede reemplazar completamente a innodb y es mejor en rendimiento y concurrencia.

  • La mayoría de las bases de datos mysql de Alibaba en realidad usan el prototipo Percona para modificarlo.

  • AliSql+AliRedis

Supongo que te gusta

Origin blog.csdn.net/m0_60961651/article/details/132272764
Recomendado
Clasificación