Colección de nuevas funciones de MySQL 8.0

Oficialmente, MySQL 8 es 2 veces más rápido que MySQL 5.7, ¡y también trae muchas mejoras y un rendimiento más rápido!

Nota: La actualización de MySQL 5.7 a MySQL 8.0 solo admite actualizaciones in situ y no admite la
degradación de MySQL 8.0 a MySQL 5.7 (o la degradación de una versión de MySQL 8.0 a cualquier versión anterior de MySQL 8.0
). La única alternativa admitida es realizar una copia de seguridad de los datos antes de actualizar.

La siguiente es una breve introducción a las nuevas características y mejoras a las que vale la pena prestar atención en MySQL 8.

1. Desempeño

MySQL 8.0 es 2 veces más rápido que MySQL 5.7.

MySQL 8.0 ofrece un mejor rendimiento en las siguientes áreas: cargas de trabajo de lectura / escritura, cargas de trabajo intensivas en E / S y cargas de trabajo altamente competitivas (problemas de competencia en puntos calientes).
Inserte la descripción de la imagen aquí
2. NoSQL

MySQL ha proporcionado funciones de almacenamiento NoSQL desde la versión 5.7, y esta parte de la función también se ha mejorado mucho en la versión 8.0. Esta característica elimina la necesidad de una base de datos de documentos NoSQL independiente, y el almacenamiento de documentos MySQL también brinda soporte para transacciones de múltiples documentos y cumplimiento completo de ACID para documentos JSON sin esquema.
Inserte la descripción de la imagen aquí

3. Funciones de ventana

A partir de MySQL 8.0, se ha agregado un nuevo concepto llamado función de ventana, que se puede utilizar para implementar varios métodos de consulta nuevos. Las funciones de ventana son similares a las funciones agregadas como SUM () y COUNT (), pero no combina varias filas de resultados de consultas en una sola, sino que vuelve a colocar los resultados en varias filas. En otras palabras, la función de ventana no requiere GROUP BY.

4. índice invisible (índice invisible)
En MySQL 8.0, el índice se puede "ocultar" y "mostrar". Cuando el índice está oculto, el optimizador de consultas no lo utilizará, pero el índice todavía está en el disco, las estadísticas están todas allí y los datos continuarán manteniéndose automáticamente. Podemos utilizar esta función para depurar el rendimiento, por ejemplo, primero ocultamos un índice y luego observamos su impacto en la base de datos. Si el rendimiento de la base de datos ha disminuido, lo que indica que el índice es útil, y luego "restaurar la visualización"; si no hay un cambio visible en el rendimiento de la base de datos, indica que el índice es redundante y puede considerarse eliminado. .

-- 查看有没有invisible的索引:
select index_name,is_visible from information_schema.statistics where table_schema='world' and table_name="city";

Inserte la descripción de la imagen aquí


```sql
-- 创建visible索引:
alter table city add index idx(name) visible;
select index_name,is_visible from information_schema.statistics where table_schema='world' and table_name="city";
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210324110710640.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMyMDY2MA==,size_16,color_FFFFFF,t_70)

```sql
-- 修改visible索引为invisible索引:
alter table city alter index idx  invisible;
select index_name,is_visible from information_schema.statistics where table_schema='world' and table_name="city";

Inserte la descripción de la imagen aquí

5. Índice inverso
MySQL 8.0 proporciona soporte para ordenar índices en orden descendente, y los valores en este índice también se ordenarán en orden descendente.


```sql
-- 示例:
select * from city where country=xx order by city asc, num desc;
idx(country,city,num desc)

创建倒序索引 :
alter table city add index idx(country,city,num desc);

6. Codificación UTF-8
A partir de MySQL 8, utf8mb4 se usa como el juego de caracteres predeterminado de MySQL (anteriormente, el juego de caracteres predeterminado latin1), y la intercalación predeterminada se ha cambiado de latin1_swedish_ci a utf8mb4_800_ci_ai.

Los cambios predeterminados se aplican a libmysql y a las herramientas de comando del servidor, así como al propio servidor.

Los cambios también se reflejan en la prueba MTR, que se ejecuta utilizando el nuevo juego de caracteres predeterminado.

Se agregó soporte para reglas de clasificación que distinguen entre mayúsculas y minúsculas y acentos. MySQL 8.0 admite los 3 niveles de pesos de intercalación definidos por DUCET (tabla de entrada de intercalación Unicode predeterminada).

7.JSON

MySQL 8.0 agrega nuevas funciones JSON y mejora el rendimiento de ordenar y agrupar valores JSON.

Sintaxis extendida del alcance en la expresión de ruta JSON

MySQL 8.0 amplía la sintaxis de los rangos en las expresiones de ruta JSON. Por ejemplo, SELECT
JSON_EXTRACT ('[1, 2, 3, 4, 5]', '$ [1 a 3]'); resultado [2, 3, 4]. La nueva sintaxis introducida es un subconjunto de la sintaxis estándar de SQL, descrita en SQL: 2016, 9.39 SQL / JSON Path Language: Syntax and Semantics.

Función de tabla JSON
MySQL 8.0 agrega la función de tabla JSON, que permite el uso de mecanismos SQL para procesar datos JSON. JSON_TABLE () crea una vista relacional de datos JSON. Asigna los resultados de la evaluación de datos JSON a filas y columnas relacionales. Los usuarios pueden usar SQL para consultar los resultados devueltos por la función como tablas relacionales regulares, como combinaciones, elementos y agregaciones.

Función de agregación JSON
MySQL 8.0 agrega la función de agregación JSON_ARRAYAGG () para generar matrices JSON y JSON_OBJECTAGG () para generar objetos JSON. De esta manera, los documentos JSON en varias líneas se pueden combinar en matrices JSON u objetos JSON.

Función de fusión JSON
La función JSON_MERGE_PATCH () implementa la semántica de JavaScript (y otros lenguajes de scripting) especificada por RFC7396, es decir, elimina los duplicados con la prioridad del segundo documento. P.ej,. JSON_MERGE ('{"a": 1, "b": 2}', '{"a": 3, "c": 4}'); # devuelve {"a": 3, "b": 2, "C": 4}
La función JSON_MERGE_PRESERVE () tiene la semántica de JSON_MERGE () implementada en MySQL 5.7, que retiene todos los valores, por ejemplo, JSON_MERGE ('{"a": 1, "b": 2}', ' {"A": 3, "c": 4} '); # devuelve {"a": [1,3], "b": 2, "c": 4}.
No en JSON_MERGE () MySQL 8.0 It Se recomienda utilizar las funciones existentes para eliminar la ambigüedad de la operación de combinación.

8. Operación IPV6

MySQL 8.0 mejora la disponibilidad de las operaciones IPv6 al admitir operaciones bit a bit en el tipo de datos BINARIO. En MySQL 5.6, presentamos las funciones INET6_ATON () e INET6_NTOA () para convertir la dirección IPv6 VARBINARY (16) entre formatos de texto (como 'fe80 :: 226: b9ff: fe77: eb17' y). Sin embargo, hasta ahora no hemos podido combinar estas funciones de IPv6 con operaciones bit a bit, porque tales operaciones convertirían (incorrectamente) la salida a BIGINT. Por ejemplo, si tenemos una dirección IPv6 y queremos probarla con una máscara de red, podemos usarla ahora porque devuelve el tipo de datos (128 bits) correctamente.

9. Realizar operaciones bit a bit en tipos de datos binarios

MySQL 8.0 extiende las operaciones bit a bit ("bit a bit AND", etc.) para que también se pueda usar con [VAR] BINARY / [TINY | MEDIUM | LONG] BLOB. En las versiones anteriores a la 8.0, solo los enteros admiten operaciones con bits. Si utiliza operaciones bit a bit en archivos binarios, los parámetros se convertirán implícitamente a BIGINT (64 bits) antes de la operación, por lo que es posible que se pierdan bits. A partir de 8.0, las operaciones bit a bit son aplicables a todos los tipos de datos BINARY y BLOB, y los parámetros se obligan a convertir para que los bits no se pierdan.

10. Operación UUID

MySQL 8.0 mejora la usabilidad de las operaciones UUID implementando tres nuevas funciones SQL UUID_TO_BIN () (BIN_TO_UUID () e IS_UUID ()). El primero convierte texto en formato UUID a VARBINARY (16), el segundo convierte texto en formato UUID VARBINARY (16) y el último comprueba la validez del texto en formato UUID. VARBINARY (16) puede usar el índice de función para indexar el UUID almacenado como. Las funciones UUID_TO_BIN () y UUID_TO_BIN () también pueden reproducir aleatoriamente bits relacionados con el tiempo y moverlos al principio para hacerlos compatibles con el índice y evitar la inserción aleatoria en el árbol B, reduciendo así el tiempo de inserción.

11. Fiabilidad

MySQL 8.0 mejora la confiabilidad general de MySQL porque:
MySQL 8.0 almacena sus metadatos en el probado motor de almacenamiento transaccional InnoDB. Las tablas del sistema (por ejemplo, usuarios y privilegios) y los diccionarios de datos se representan en InnoDB.
MySQL 8.0 elimina una fuente potencial de inconsistencia. En las versiones 5.7 y anteriores, en realidad hay dos diccionarios de datos, uno para la capa del servidor y otro para la capa InnoDB. En algunas situaciones de bloqueo, es posible que no estén sincronizados. En 8.0, solo hay un diccionario de datos.
MySQL 8.0 garantiza DDL atómico y a prueba de accidentes. De esta manera, puede asegurarse de que el usuario pueda ejecutar completamente o no ejecutar ninguna declaración DDL. Esto es especialmente importante en un entorno de replicación; de lo contrario, en algunos casos, el servidor maestro y el servidor esclavo (nodos) no estarán sincronizados, lo que provocará una deriva de datos.

12.undo espacio de tabla

MySQL 8.0 brinda a los usuarios un control completo sobre los espacios de tabla Deshacer, es decir, cuántos espacios de tabla hay, dónde se colocan y cuántos segmentos de reversión hay en cada tabla.
Ya no deshace los registros en el espacio de tabla del sistema. Durante el proceso de actualización, el registro de deshacer se migrará del espacio de tabla del sistema al espacio de tabla de deshacer. Esto proporciona una ruta de actualización para las instalaciones 5.7 existentes que utilizan el espacio de tabla del sistema para almacenar el registro de deshacer.
El espacio de tabla para deshacer se puede administrar por separado del espacio de tabla del sistema. Por ejemplo, puede guardar el espacio de tabla para deshacer en un almacenamiento rápido.
Recupere el espacio ocupado por transacciones inusualmente grandes (en línea). Cree al menos dos espacios de tabla de deshacer para permitir que el espacio de tabla se trunque. Esto permite a InnoDB reducir el espacio de tabla de deshacer, porque un espacio de tabla de deshacer puede estar activo y otro espacio de tabla de deshacer puede truncarse.
Cuantos más segmentos de retroceso, menos expropiación. Los usuarios pueden optar por tener hasta 127 espacios de tabla de deshacer, cada uno con hasta 128 segmentos de reversión. Más segmentos de reversión significan que es más probable que las transacciones simultáneas utilicen un segmento de reversión separado para su registro de deshacer, lo que reduce la conquista de los mismos recursos.

13. Complemento de cifrado

MySQL 8.0 cambió el complemento de autenticación predeterminado de mysql_native_password a caching_sha2_password. En consecuencia, libmysqlclient también utilizará caching_sha2_password como mecanismo de autenticación predeterminado. El nuevo caching_sha2_password combina mejor seguridad (algoritmo SHA2) y alto rendimiento (almacenamiento en caché).

14 Rol de SQL

MySQL 8.0 implementa roles SQL. Un rol es una colección de privilegios con nombre. El objetivo es simplificar la gestión de los derechos de acceso de los usuarios. Puede otorgar roles a los usuarios, otorgar privilegios a los roles, crear roles, eliminar roles y determinar qué roles son aplicables durante la sesión.

Lo anterior presenta MySQL 8.0 con nuevas funciones y mejoras de rendimiento. Para obtener más detalles, haga clic en:
https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-11.html

https://blogs.oracle.com/mysql/announcing-general-availability-of-mysql-80

https://mysqlserverteam.com/whats-new-in-mysql-8-0-generally-available/

Para obtener contenido más interesante, preste atención a la cuenta pública de WeChat

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_45320660/article/details/115166830
Recomendado
Clasificación