¡Debes ver! Análisis de las funciones de MySQL8.0 (actualización continua)

Una introducción básica a MySQL8.0

  MySQL 8.0 tiene la tasa de adopción más rápida hasta el momento. La tasa de adopción en agosto de 2019 alcanzó el 26%, del 5,7 al 47% y del 5,6 al 24%.

  • 2016-09-12, la primera versión DM (hito de desarrollo) MySQL 8.0.0, hito de desarrollo ...
  • 2018-04-19 Lanzamiento de la primera versión GA (disponibilidad general) 8.0.11;
  • 2018-07-27 Lanzamiento de la segunda versión GA (disponibilidad general) 8.0.12;
  • 2018-10-22 Lanzamiento de la tercera versión GA (disponibilidad general) 8.0.13;
  • 2019-01-21 Lanzamiento de la cuarta versión GA (disponibilidad general), 8.0.14;
  • 2019-02-01 Lanzamiento de la quinta versión GA (disponibilidad general) 8.0.15;
  • 2019-04-25 Lanzamiento de la sexta versión GA (disponibilidad general) 8.0.16;
  • 2019-07-22 Se lanzó la séptima versión GA (disponibilidad general), 8.0.17;
  • 2019-10-14 Lanzamiento de la octava versión GA (Disponibilidad general), 8.0.18;
  • 2020-01-13 Se lanzó la novena versión GA (disponibilidad general), 8.0.19;
  • 2020-04-27 Lanzamiento de la décima versión GA (Disponibilidad general), 8.0.20;
  • 2020-07-13 Se lanzó la undécima versión GA (disponibilidad general), 8.0.21;
    Inserte la descripción de la imagen aquí

Dos, características clave de MySQL8.0

2.1 El juego de caracteres predeterminado se cambia de latin1 a utf8mb4

  Antes de la versión 8.0, el juego de caracteres predeterminado era latin1, el juego de caracteres predeterminado de la versión 8.0 era utf8mb4 y la regla de clasificación era utf8mb4_0900_ai_ci. Utf8 solía apuntar a utf8mb3. En el futuro, utf8 también apuntará a utf8mb4 por defecto.
MySQL5
Inserte la descripción de la imagen aquí
MySQL8
Inserte la descripción de la imagen aquí

2.2 Reemplazar todas las tablas del sistema MyISAM con tablas InnoDB

  Todas las tablas del sistema se reemplazan con tablas transaccionales innodb. La instancia de MySQL predeterminada no contendrá ninguna tabla MyISAM a menos que las tablas MyISAM se creen manualmente.
MySQL5
Inserte la descripción de la imagen aquí
MySQL8
Inserte la descripción de la imagen aquí

2.3 Persistencia de variables incrementales

  En versiones anteriores a 8.0, si el valor de la clave primaria AUTO_INCREMENT auto-incremental es mayor que max (clave primaria) +1, después de que MySQL se reinicie, se restablecerá AUTO_INCREMENT = max (clave primaria) +1. Este fenómeno puede llevar a Conflictos de claves primarias comerciales u otros problemas que son difíciles de encontrar. La versión 8.0 conservará el valor AUTO_INCREMENT y el valor no cambiará después de que se reinicie MySQL.
MySQL5
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

MySQL8
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

2.4 atomización DDL

  En 8.0, el DDL de la tabla InnoDB admite la integridad de la transacción, ya sea correcta o revertida. El registro de reversión de la operación DDL se escribe en la tabla del diccionario de datos del diccionario de datos mysql.innodb_ddl_log para las operaciones de reversión. Esta tabla es una tabla oculta. No se pueden ver las tablas de espectáculos. Imprima el registro de operaciones de ddl en el registro de errores de mysql configurando los parámetros.
  Veamos otro ejemplo. Solo hay una tabla t1 en la biblioteca, descartar tabla t1, t2; al intentar eliminar dos tablas t1, t2, antes de 8.0, se informó un error, pero se eliminó la tabla t1 y se informó un error en 8.0, pero la tabla t1 No se ha eliminado, lo que demuestra la atomicidad de las operaciones DDL 8.0, ya sea que se hayan realizado correctamente o se hayan revertido.
MySQL5
Inserte la descripción de la imagen aquí
MySQL8
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

2.5 persistencia de modificación de parámetros

  La versión 8.0 de MySQL admite la modificación en línea y la persistencia de parámetros globales. Al agregar la palabra clave PERSIST, los parámetros modificados se pueden conservar en un nuevo archivo de configuración (mysqld-auto.cnf), que se puede obtener del archivo de configuración cuando se reinicia MySQL. A los últimos parámetros de configuración. Por ejemplo, ejecute: SET PERSIST @@ global.sync_binlog = 100; El sistema generará un archivo que contiene mysqld-auto.cnf en formato json en el directorio de datos. Después de formatear, se verá así, cuando my.cnf y mysqld-auto.cnf Cuando ambos existen, el último tiene mayor prioridad.
Inserte la descripción de la imagen aquí

2.6 Índice descendente

  MySQL ha admitido gramaticalmente el índice descendente durante mucho tiempo, pero de hecho todavía está creando un índice ascendente. Como se muestra en MySQL 5.7 a continuación, el campo c2 está en orden descendente, pero c2 todavía está en orden ascendente desde la tabla show create. 8.0 puede ver que el campo c2 está en orden descendente.
MySQL5
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
MySQL8
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

2.7 agrupar por ya no ordenar implícitamente

  Antes de la versión 8.0, agrupar por ordenará de forma predeterminada, después de 8.0, ya no se realiza la clasificación implícita.
MySQL5
Inserte la descripción de la imagen aquí
MySQL8
Inserte la descripción de la imagen aquí

2.8 Mejora de la función JSON

  MySQL 8 ha mejorado enormemente el soporte para JSON, agregando la función JSON_EXTRACT () para extraer datos de campos JSON basados ​​en parámetros de consulta de ruta, y las agregaciones JSON_ARRAYAGG () y JSON_OBJECTAGG () para combinar datos en matrices y objetos JSON, respectivamente función.
  En la replicación maestro-esclavo, se agrega el nuevo parámetro binlog_row_value_options para controlar el modo de transmisión de datos JSON, y permitir la modificación de la parte de tipo Json. Solo la parte modificada se registra en el binlog, lo que reduce la ocupación de recursos de json big data cuando hay pocas modificaciones. .

2.9 Rehacer y deshacer el cifrado de registros

  Agregue los siguientes dos parámetros para controlar el cifrado de los registros de rehacer y deshacer.

  • innodb_undo_log_encrypt
  • innodb_undo_log_encrypt

2.10 innodb seleccionar para actualización omitir bloqueo en espera

  seleccione ... para actualizar, seleccione ... para compartir (nueva sintaxis en 8.0) Agregar sintaxis NOWAIT, SKIP LOCKED, omitir bloqueo en espera u omitir bloqueo. En las versiones 5.7 y anteriores, seleccione ... para actualizar, si no se puede obtener el bloqueo, esperará hasta que se agote el tiempo de espera de innodb_lock_wait_timeout. En la versión 8.0, al agregar nowait, omitir la sintaxis bloqueada, puede regresar inmediatamente. Si la fila de consulta ha sido bloqueada, nowait informará un error y regresará inmediatamente, y el salto bloqueado también regresará inmediatamente, pero el resultado devuelto no contiene la fila bloqueada.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

2.11 Agregar sintaxis SET_VAR

  Agregar la gramática SET_VAR a la gramática sql y ajustar dinámicamente algunos parámetros ayudará a mejorar el rendimiento de las declaraciones.

  • seleccione / * + SET_VAR (sort_buffer_size = 16M) * / id del id del pedido de prueba;
  • insertar / * + SET_VAR (controles_clave_extranjeros = OFF) * / en los valores de prueba (nombre) (1);

2.12 Parámetro agregado innodb_dedicated_server

  Permita que InnoDB configure automáticamente los tres parámetros innodb_buffer_pool_size, innodb_log_file_size e innodb_flush_method según el tamaño de memoria detectado en el servidor.

2.13 Recuperación automática del espacio de deshacer

  El valor predeterminado del parámetro innodb_undo_log_truncate en la versión 8.0.2 se cambia de OFF a ON, y la recuperación automática del espacio de tabla de registro de deshacer está habilitada de forma predeterminada.
  El parámetro innodb_undo_tablespaces tiene como valor predeterminado 2 en la versión 8.0.2 Cuando se recicla un espacio de tabla deshacer, hay otro que proporciona servicios normales.
  El parámetro innodb_max_undo_log_size define el valor máximo de recuperación del espacio de tabla de deshacer. Cuando el espacio de tabla de deshacer supera este valor, el espacio de tabla se marca como reciclable.

2.14 Apoyo índice invisible

  Utilice la palabra clave INVISIBLE para establecer si el índice es visible durante la creación de la tabla o los cambios de la misma. El índice no es visible, pero el optimizador no usa el índice durante la consulta. Incluso si se usa el índice forzado, el optimizador no usará el índice y el optimizador no informará el error de que el índice no existe, porque el índice aún existe, cuando sea necesario También se puede restaurar rápidamente para que sea visible.
Inserte la descripción de la imagen aquí

2.15 histograma de soporte

  El optimizador utilizará los datos de column_statistics para determinar la distribución de los valores de campo y obtener un plan de ejecución más preciso.
  Puede utilizar ANALYZE TABLE table_name [ACTUALIZAR HISTOGRAMA en col_name con N BUCKETS | DROP HISTOGRAM ON clo_name] para recopilar o eliminar información de histograma.
  El histograma cuenta la distribución de datos de ciertos campos en la tabla y proporciona una referencia para optimizar la selección de un plan de ejecución eficiente El histograma es esencialmente diferente de un índice y mantener un índice tiene un costo. Cada inserción, actualización y eliminación deberá actualizar el índice, lo que tendrá un cierto impacto en el rendimiento. El histograma se crea una vez y nunca se actualiza a menos que se actualice explícitamente. Por lo tanto, no afectará el rendimiento de insertar, actualizar y eliminar.
Inserte la descripción de la imagen aquí

2.16 Clasificación de registros más detallada

  Se agregó el número de mensaje de error [MY-010311] y el subsistema al que pertenece el error [Servidor] en el mensaje de error
Inserte la descripción de la imagen aquí

2.17 Cambio de complemento de cifrado de autenticación

  MySQL8.0 comenzó a usar caching_sha2_password como complemento de autenticación predeterminado. Caching_sha2_password proporciona un cifrado de contraseña más seguro que el complemento mysql_native_password, y caching_sha2_password proporciona un mejor rendimiento. Debido a estas características superiores de seguridad y rendimiento, caching_sha2_password es el complemento de autenticación preferido para MySQL 8.0, y también es el complemento de autenticación predeterminado en lugar de mysql_native_password. Este cambio afectará al servidor y a la biblioteca cliente libmysqlclient; actualmente no es compatible con el software cliente de uso frecuente.

2.18 Agregar grupo de recursos y administración de roles

  MySQL 8.0 agrega una nueva función de grupo de recursos para ajustar la prioridad de subprocesos y vincular núcleos de CPU. Los usuarios de MySQL deben tener el permiso RESOURCE_GROUP_ADMIN para crear, modificar y eliminar grupos de recursos. En el entorno Linux, el proceso MySQL necesita el permiso CAP_SYS_NICE para utilizar la funcionalidad completa del grupo de recursos.
Inserte la descripción de la imagen aquí
  Un rol se puede considerar como una colección de algunos permisos, y se asigna un rol unificado al usuario, y la modificación del permiso se lleva a cabo directamente a través del rol, sin requerir una autorización separada para cada usuario.
Se proporcionan dos grupos de recursos de forma predeterminada, a saber, USR_default y SYS_default.

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

2.19 Clon de instancia

  En muchos escenarios, necesitamos clonar una instancia de MySQL. Por ejemplo, en MGR, necesitamos crear una nueva instancia con una copia de seguridad antes de agregarla a la replicación del grupo. En la arquitectura tradicional maestro-esclavo, si necesita agregar una biblioteca esclava, también usa la copia de seguridad para restaurar, crear una nueva instancia y luego agregar esta instancia a la replicación maestro-esclavo. La función de clonación implementada en la versión 8.0.17 admite local o remoto. Los datos clonados son los datos almacenados en la instantánea física, que pueden realizar la clonación de la instancia de MySQL de manera más rápida y eficiente.
  El complemento de clonación desarrollado por MySQL 8.0.17 resuelve este problema y simplifica el proceso de replicación de instancias. Con solo ejecutar algunos comandos a través del cliente mysql, una instancia de MySQL en ejecución se puede clonar automáticamente en otra instancia nueva sin demasiados pasos ni participación manual.
Precauciones:

  • Los parámetros de configuración de MySQL no se clonarán.
  • Los archivos Binlog no se clonarán.
  • Las tablas que solo admiten el motor de almacenamiento InnoDB, MyISAM y los motores CSV son tablas vacías después de ser clonadas.
  • Durante el proceso de clonación, se bloquean todas las operaciones de DDL.
  • Durante la operación de clonación, se perderán los datos propios de la instancia y Binlog. Si es necesario, haga una copia de seguridad antes de la clonación.

2.20 almacenamiento de documentos NoSQL

  El almacenamiento de documentos MySQL proporciona a los desarrolladores la mayor flexibilidad, es decir, admite aplicaciones relacionales SQL tradicionales, así como aplicaciones de bases de datos de documentos con un modelo NoSQL gratuito. Por lo tanto, ya no es necesario configurar una base de datos de documentos NoSQL separada. Los documentos MySQL se almacenan como documentos JSON sin esquema, lo que brinda soporte para transacciones de múltiples documentos y compatibilidad total con ACID.
Inserte la descripción de la imagen aquí

2.21 Función de ventana

  Similar a las funciones de agregación de grupo, las funciones de ventana realizan algunos cálculos en un grupo de filas, como COUNT o SUM. Sin embargo, si la agregación de grupos colapsa este grupo de filas en una sola fila, la función de ventana realizará la agregación en cada fila del conjunto de resultados. Las funciones de ventana tienen dos formas: funciones agregadas SQL utilizadas como funciones de ventana y funciones de ventana dedicadas. Este es un conjunto de funciones agregadas que admiten ventanas en MySQL: COUNT, SUM, AVG, MIN, MAX, BIT_OR, BIT_AND, BIT_XOR, STDDEV_POP (y sus sinónimos STD, STDDEV), STDDEV_SAMP, VAR_POP (y sus sinónimos VARIANCE) y VAR_SAMP. Un conjunto de funciones de ventana especializadas son: RANK, DENSE_RANK, PERCENT_RANK, CUME_DIST, NTILE, ROW_NUMBER, FIRST_VALUE, LAST_VALUE, NTH_VALUE, LEAD y LAG.
Inserte la descripción de la imagen aquí

2.22 Expresión de tabla común (CTE)

  MySQL 8.0 proporciona Expresiones de tabla comunes (CTE). Antes de MySQL8.0, es necesario utilizar subconsultas para implementar consultas complejas.Las declaraciones SQL no solo son complejas y de bajo rendimiento, sino que tampoco son lo suficientemente claras. La apariencia de CTE simplifica la escritura de declaraciones de consultas complejas y mejora el rendimiento de SQL.
  En comparación con la subconsulta o la consulta derivada, CTE puede reutilizar el último resultado de la consulta, es decir, consultar una vez y, al mismo tiempo, CTE puede hacer referencia entre sí.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

2.23 Escaneo de rango de salto

  El escaneo de rango de salto es una nueva característica agregada por MySQL para mejorar el rendimiento en la versión 8.0.13. El escaneo de rango de salto puede hacer que algunos SQL que no pueden usar el índice conjunto utilicen el índice conjunto para consultas, y pueden usar el índice conjunto de manera más eficiente. Esto es de gran importancia para el uso del índice conjunto MySQL para aplicaciones de consulta.
Inserte la descripción de la imagen aquí

2.24 unión hash

  Antes de 8.0.18, MySQL solo admitía el algoritmo Nest Loop Join. El más simple es Simple Nest Loop Join. MySQL ha realizado varias optimizaciones para este algoritmo, implementando Block Nest Loop Join, Index Nest Loop Join y Batched Key Access. Con estos La optimización puede aliviar la urgencia de HashJoin hasta cierto punto.
  Hash Join es una optimización para el escenario de unión equivalente. La idea básica es cargar los datos de la tabla externa en la memoria y crear una tabla hash, de modo que solo necesita recorrer la tabla interna una vez para completar la operación de unión y generar registros coincidentes.

2.25 Otras características

1. Eliminación de algunas tablas del sistema, mejora de las tablas del sistema
2. Escritura paralela de rehacer, nuevos parámetros de registro lento, más detallados
3. Optimización de la replicación, optimización del recuento (*)
4. Soporte de transacciones distribuidas de forma predeterminada
5. Eliminar la caché de consultas Y mysql_upgrade, agregar verificación de integridad
6. El índice predeterminado de la tabla temporal es innodb
7. El espacio de tabla UNDO está habilitado de manera predeterminada y se admite la cantidad de ajustes en línea
8. Grant ya no crea usuarios implícitamente, agregue contraseña auxiliar
9. Quite PASSWORD () Función
10, permisos dinámicos
11, MySQL8.0 admite constantes de costos configurables, optimiza la sobrecarga del optimizador, admite más sugerencias y el optimizador considera si los datos están en el Buffer Pool al formular el plan de ejecución.
12. MySQL 8.0 tiene una mejora muy alta en el soporte de SIG, alcanzando o incluso superando a PostgreSQL en función.
13, optimización de MGR
14, rehacer archivo
15, nueva arquitectura innodb replicaSet
16, doble escritura independiente
17, explica el soporte de análisis
18, soporte de bloqueo de respaldo

Supongo que te gusta

Origin blog.csdn.net/qq_42979842/article/details/108332159
Recomendado
Clasificación