当前位置: 首页 > article >正文

MySQL8.0新特性

第十八章_MySQL8.0新特性

1.新特性概述

1. 数据库管理和存储

1.1 数据字典
  • 特性: MySQL 8.0 使用统一的数据字典存储元数据(如表、列、索引等),并将其存储在 InnoDB 表中。

  • 优点

    :

    • 提升性能:减少对文件系统的依赖。

    • 提高一致性:避免元数据与实际数据不同步的问题。

1.2 隐式主键
  • 特性: 当创建没有主键的表时,MySQL 8.0 会自动生成一个隐藏的主键。

  • 优点

    :

    • 提高数据访问效率。

    • 减少手动维护主键的麻烦。


2. SQL 语言增强

2.1 窗口函数
  • 特性: 支持窗口函数(OVER 子句),允许在查询中执行复杂的分析操作。

  • 示例

    :

    SELECT name, salary, 
           RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS rank
    FROM employees;

  • 优点

    :

    • 适合排名、累计总和、移动平均等分析场景。

2.2 公用表表达式(CTE)
  • 特性: 支持递归和非递归 CTE(WITH 子句)。

  • 示例

    :

    WITH RECURSIVE cte AS (
        SELECT 1 AS n
        UNION ALL
        SELECT n + 1 FROM cte WHERE n < 5
    )
    SELECT * FROM cte;

  • 优点

    :

    • 提高查询的可读性和复用性。

    • 递归查询支持层级结构数据处理。

2.3 JSON 增强
  • 特性: 增强了对 JSON 数据类型的支持,包括 JSON 表达式、函数和索引。

  • 示例

    :

    SELECT JSON_EXTRACT(json_column, '$.key') AS value FROM my_table;
  • 新增函数: JSON_TABLE()JSON_ARRAYAGG()JSON_OBJECTAGG() 等。

  • 优点

    :

    • 更高效地处理半结构化数据。

2.4 默认值表达式
  • 特性: 支持列的默认值为表达式。

  • 示例

    :

    CREATE TABLE orders (
        id INT AUTO_INCREMENT PRIMARY KEY,
        order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );
  • 优点

    :

    • 动态设置默认值,更灵活。


3. 性能优化

3.1 索引增强
  • 特性: 支持隐式列的降序索引(DESC)。

  • 优点

    :

    • 提高查询性能,尤其是在排序需求较多的场景中。

3.2 持久化生成列
  • 特性: 支持生成列的持久化(STORED)。

  • 优点

    :

    • 减少存储开销,同时支持复杂计算。

3.3 查询性能改进
  • 特性: 优化器改进了查询计划的生成,支持更复杂的优化场景,如物化 CTE。

  • 优点

    :

    • 提高复杂查询的执行效率。


4. 安全性增强

4.1 账户锁定和密码策略
  • 特性: 支持用户账户锁定(ACCOUNT LOCK)和密码过期策略。

  • 示例

    :

    ​
    ALTER USER 'user'@'localhost' ACCOUNT LOCK;
  • 优点

    :

    • 提高账户安全性,防止暴力破解。

4.2 默认使用 caching_sha2_password
  • 特性: 默认身份验证插件更改为 caching_sha2_password

  • 优点

    :

    • 提高密码存储的安全性。

4.3 动态权限
  • 特性: 支持动态权限,可以更细粒度地控制用户操作。

  • 示例

    :

    ​
    GRANT BACKUP_ADMIN ON *.* TO 'user'@'localhost';
  • 优点

    :

    • 更灵活的权限管理。


5. JSON 和 GIS 数据类型改进

5.1 JSON 数据类型
  • 新增 JSON 函数,如 JSON_TABLE(),用于将 JSON 数据转换为关系型数据表。

  • 支持 JSON 部分更新,提升性能。

5.2 GIS 数据类型
  • 特性: 改进了对 GIS 数据类型的支持,包括更高效的空间索引。

  • 优点

    :

    • 更适合地理位置相关的应用场景。


6. 开发工具和可用性

6.1 错误日志管理
  • 特性: 错误日志支持多种格式(如 JSON)和日志轮换。

  • 优点

    :

    • 提高日志分析和管理的效率。

6.2 系统变量持久化
  • 特性: 支持动态系统变量的持久化。

  • 示例

    :

    SET PERSIST max_connections = 200;
  • 优点

    :

    • 重启后仍然保留变量值,无需修改配置文件。


7. 其他改进

7.1 数据复制
  • 支持基于事务的复制,增强了复制的稳定性和一致性。

  • 支持并行复制,提高复制性能。

7.2 临时表改进
  • 临时表默认使用 InnoDB 存储引擎,提高事务支持能力。

2.新特性1: 窗口函数

2.2 排名函数

用于给数据分配排名:

  • ROW_NUMBER(): 为每行分配唯一的序号。

  • RANK(): 按排序规则排名,值相同的行具有相同的排名,下一排名会跳过。

  • DENSE_RANK(): 与 RANK() 类似,但不会跳过排名。

  • NTILE(n): 将数据划分为 n 个桶,并为每行分配桶号。

2.3 偏移函数

用于访问窗口内其他行的数据:

  • LAG(column, offset, default): 获取当前行之前第 offset 行的值。

  • LEAD(column, offset, default): 获取当前行之后第 offset 行的值。

  • FIRST_VALUE(column): 获取窗口中第一行的值。

  • LAST_VALUE(column): 获取窗口中最后一行的值。

2.4 比率和累计分布
  • PERCENT_RANK(): 当前行在分组中的百分比排名。

  • CUME_DIST(): 当前行及之前的行在分组中的累计分布比例。


http://www.kler.cn/a/506419.html

相关文章:

  • 人工智能-机器学习之多分类分析(项目实战二-鸢尾花的多分类分析)
  • 【网络编程】基础知识
  • 打造更安全的Linux系统:玩转PAM配置文件
  • 工作记录小点
  • C语言初阶习题【30】字符串左旋
  • 基于springboot的自习室预订系统
  • 于灵动的变量变幻间:函数与计算逻辑的浪漫交织(上)
  • Hive迁移,小表(10G以下的),分区快速修复批量脚本
  • 硬件学习笔记--31 IEC62053-21相关内容介绍
  • 基于代理的RAG实现-Agentic RAG
  • Kafka消息轨迹方案设计与实现
  • 新型智慧园区解决方案:AI赋能场景,核心架构全解析
  • 一个超级简单的清晰的LSTM模型的例子
  • (双系统)Ubuntu+Windows解决grub引导问题和启动黑屏问题
  • 记录一次RPC服务有损上线的分析过程
  • 2025年01月14日Github流行趋势
  • Elasticsearch容器启动报错:AccessDeniedException[/usr/share/elasticsearch/data/nodes];
  • 栈算法篇——LIFO后进先出,数据与思想的层叠乐章(下)
  • MATLAB自带函数,使用遗传算法,求函数最小值,附代码
  • 用python进行大恒相机的调试
  • SpringSecurity-前后端分离
  • 码编译安装httpd 2.4,测试
  • CryptoMamba:利用状态空间模型实现精确的比特币价格预测
  • 基于多个边缘盒子部署的综合视频安防系统的智慧地产开源了
  • Python如何在指定行追加内容
  • IDEA测试报错java.lang.NullPointerException空指针异常解决办法