Introducción al motor de base de datos MySQL

1. ¿Qué es un motor de base de datos?

    Un motor de base de datos es un programa o segmento de programa que opera una base de datos y se utiliza para almacenar, procesar y proteger datos como un servicio central.

    Utilice el motor de base de datos para controlar el acceso y procesar transacciones rápidamente para cumplir con los requisitos de la mayoría de las aplicaciones que procesan grandes cantidades de datos en la empresa. El proyecto de aplicación de base de datos está vinculado con la base de datos a través del motor de base de datos.

    ¿Qué es un motor de base de datos? En resumen, un motor de base de datos es un programa que controla varias bases de datos y es responsable de procesar toda la parte central del trabajo relacionado con la base de datos. De manera similar, las instrucciones de operación del proyecto de aplicación de base de datos se aplicarán a la base de datos a través del procesamiento del motor de base de datos.

    MySQL es un software de base de datos de uso común. Tiene muchas ventajas, como código abierto, gratuito, etc. De hecho, también tiene una buena característica, es decir, hay una variedad de motores para que elijas. El motor de la base de datos MySQL depende de cómo se compiló MySQL durante la instalación. Para agregar un nuevo motor, se debe volver a compilar MYSQL. Los dos motores comúnmente utilizados en MYSQL son MyISAM e InnoDB .

2, mi ISAM

    Antes de MySQL 5.5.8, MyIASM era el motor de almacenamiento predeterminado, pero no brindaba soporte para transacciones de bases de datos, ni para bloqueos de filas ni claves foráneas. Por lo tanto, cuando se INSERTAN o ACTUALIZAN datos, la operación de escritura debe bloquear toda la tabla. , que es ineficiente Será menor, MyISAM es principalmente para algunas aplicaciones OLAP (Procesamiento analítico en línea).

    Sin embargo, a diferencia de Innodb, MyIASM almacena la cantidad de filas en la tabla, por lo que cuando SELECCIONA COUNT(*) FROM TABLE, solo necesita leer directamente el valor guardado sin escanear toda la tabla. Si la tabla tiene muchas más operaciones de lectura que de escritura y no requiere compatibilidad con transacciones de base de datos, MyIASM también es una buena opción.

    Además, otra característica distintiva de MyISAM es que su almacenamiento en búfer solo almacena archivos de índice, no archivos de datos, lo cual es muy diferente de la mayoría de las bases de datos.

    El motor MyISAM utiliza B+Tree como estructura de índice y el campo de datos del nodo hoja almacena la dirección del registro de datos. El método de índice de MyISAM también se denomina "no agrupado", que se llama para distinguirlo del índice agrupado de InnoDB. La siguiente figura es un diagrama esquemático del índice de clave principal de MyISAM:

3,InnoDB

    A partir de MySQL 5.5.8, el motor de almacenamiento predeterminado es InnoDB. El motor Innodb proporciona soporte para transacciones ACID de base de datos e implementa cuatro niveles de aislamiento del estándar SQL.Su objetivo de diseño es principalmente para aplicaciones OLTP (On-Line Transaction Processing).

    El motor también proporciona bloqueos de fila y restricciones de clave externa, y admite lecturas consistentes sin bloqueo. Su objetivo de diseño es manejar sistemas de bases de datos de gran capacidad. En realidad, es un sistema de base de datos completo basado en el fondo de MySQL. Cuando se ejecuta MySQL, Innodb creará un grupo de búfer para almacenar datos e índices. Sin embargo, el motor no admite índices de tipo FULLTEXT y no guarda el número de filas en la tabla.Cuando SELECT COUNT(*) FROM TABLE, es necesario escanear toda la tabla.

    Este motor es el preferido cuando se van a utilizar transacciones de base de datos. Debido a la menor granularidad del bloqueo, la operación de escritura no bloqueará toda la tabla, por lo que cuando la concurrencia es alta, el uso del motor Innodb mejorará la eficiencia.

    Pero el uso de bloqueos a nivel de fila no es absoluto.Si MySQL no puede determinar el rango para escanear al ejecutar una instrucción SQL, la tabla InnoDB también bloqueará la tabla completa.

    La estructura de índice del motor Innodb también es B+Tree, pero el archivo de índice de Innodb en sí mismo es un archivo de datos, es decir, el campo de datos del B+Tree almacena los datos reales, y este índice es un índice agrupado. La clave de este índice es la clave principal de la tabla de datos, por lo que el archivo de datos de la tabla InnoDB en sí mismo es el índice principal.

    Debido a que los archivos de datos de InnoDB se agregan de acuerdo con la clave principal, InnoDB requiere que la tabla tenga una clave principal (MyISAM no la tiene). Si no hay una especificación explícita, el sistema MySQL seleccionará automáticamente una columna que pueda identificar de forma única el registro de datos como la clave principal. Si no existe para dicha columna, MySQL genera automáticamente un campo implícito como la clave principal para la tabla InnoDB. La longitud de este campo es de 6 bytes, y el tipo es un número entero largo.

    Y a diferencia de MyISAM, el campo de datos del índice auxiliar de InnoDB también almacena el valor de la clave principal del registro correspondiente en lugar de la dirección, por lo que al buscar con el índice auxiliar, primero encontrará la clave principal basada en el índice auxiliar y luego encontrará la clave real. datos basados ​​en el índice de clave principal.

    Por lo tanto, Innodb no recomienda usar una clave principal demasiado larga, de lo contrario, el índice auxiliar será demasiado grande. Se recomienda utilizar un campo de incremento automático como clave principal, de modo que cada nodo del árbol B+ se llene secuencialmente sin ajustes de división frecuentes, lo que puede mejorar efectivamente la eficiencia de la inserción de datos. El índice de clave principal y el índice auxiliar de Innodb se muestran en la siguiente figura:

 

 

    Las tablas de InnoDB se basan en índices agrupados. Por lo tanto, el índice de InnoDB puede proporcionar un rendimiento de búsqueda de clave principal muy rápido. Sin embargo, su índice secundario (Índice secundario, es decir, índice de clave no principal) también contendrá columnas de clave principal, por lo que si la definición de clave principal es relativamente grande, otros índices también lo serán. Si desea definir muchos índices en la tabla, intente definir la clave principal lo más pequeña posible. InnoDB no comprime índices. 

4. La diferencia entre MyISAM e InnoDB

    InnoDB y MyISAM son los dos tipos de tablas más utilizados cuando se utiliza MySQL Estos dos tipos de tablas tienen sus propias ventajas y desventajas, según la aplicación específica.

    La diferencia básica es: el tipo MyISAM no admite el procesamiento avanzado, como el procesamiento de transacciones, mientras que el tipo InnoDB lo admite. La tabla de tipo MyISAM enfatiza el rendimiento y su ejecución es más rápida que el tipo InnoDB, pero no brinda soporte para transacciones, mientras que InnoDB brinda soporte para transacciones y funciones avanzadas de base de datos, como claves externas.

Aquí hay algunos detalles y diferencias de implementación:

(1) InnoDB no soporta índices de tipo FULLTEXT;
(2) InnoDB no guarda el número específico de filas en la tabla, es decir, al ejecutar select count(*) fromtable, InnoDB necesita escanear toda la tabla para calcular cuántas filas hay, pero MyISAM simplemente lee la cantidad de filas guardadas. Tenga en cuenta que cuando la sentencia count(*) contiene condiciones where, las operaciones de las dos tablas son las mismas;
(3) Para campos de tipo AUTO_INCREMENT, InnoDB debe contener solo el índice del campo, pero en las tablas MyISAM, puede Crear un índice conjunto con otros campos.
(4) Cuando ELIMINAR DE la tabla, InnoDB no volverá a crear la tabla, sino que eliminará fila por fila;
(5) La operación LOAD TABLE FROMMASTER no funciona para InnoDB, la solución es cambiar primero la tabla InnoDB a la tabla MyISAM, importar Luego, los datos se cambian a una tabla InnoDB, pero no se aplica a las tablas que usan características adicionales de InnoDB (como claves externas).
(5) La diferencia entre el índice principal, el archivo de datos de InnoDB en sí mismo es el archivo de índice, y el índice y los datos de MyISAM están separados.
(6) La diferencia entre el índice auxiliar: el campo de datos del índice auxiliar de InnoDB almacena el valor de la clave principal del registro correspondiente en lugar de la dirección. El índice secundario MyISAM no es muy diferente del índice primario.

    

  • MyISAM es adecuado para:

(1) hacer muchos cálculos de conteo;
(2) insertar con poca frecuencia, consultar con mucha frecuencia;
(3) ninguna transacción.

  • InnoDB es adecuado para:

(1) Se requieren transacciones;
(2) Las actualizaciones de tablas y las consultas son frecuentes
(3) Los conjuntos de datos de gran tamaño tienden a elegir el motor InnoDB porque admite el procesamiento de transacciones y la recuperación de fallas. El tamaño de la base de datos determina el período de tiempo para la recuperación de fallas.InnoDB puede usar registros de transacciones para la recuperación de datos, lo cual es relativamente rápido.

Supongo que te gusta

Origin blog.csdn.net/wangshiqi666/article/details/130423446
Recomendado
Clasificación