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

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 nUNION ALLSELECT 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.lryc.cn/news/521217.html

相关文章:

  • Oracle EBS GL定期盘存WIP日记账无法过账数据修复
  • 【绝对无坑】Mongodb获取集合的字段以及数据类型信息
  • 【Git版本控制器--1】Git的基本操作--本地仓库
  • C++并发编程之无锁数据结构及其优缺点
  • Ubuntu上,ffmpeg如何使用cuda硬件解码、编码、转码加速
  • rclone,云存储备份和迁移的瑞士军刀,千字常文解析,附下载链接和安装操作步骤...
  • Ubuntu | 系统软件安装系列指导说明
  • 队列(算法十三)
  • vLLM私有化部署大语言模型LLM
  • OpenAI Whisper:语音识别技术的革新者—深入架构与参数
  • 基于当前最前沿的前端(Vue3 + Vite + Antdv)和后台(Spring boot)实现的低代码开发平台
  • 【Rust】错误处理机制
  • Logback日志技术
  • 9分布式微服务架构
  • Leecode刷题C语言之统计重新排列后包含另一个字符串的子字符串数目②
  • HTML和CSS相关的问题,为什么页面加载速度慢?
  • LiveGBS流媒体平台GB/T28181常见问题-没有收到视频流播放时候提示none rtp data receive未收到摄像头推流如何处理?
  • Flask表单处理与验证
  • 正泰电工携手图扑:变电站数字孪生巡检平台
  • 瑞芯微 RK 系列 RK3588 使用 ffmpeg-rockchip 实现 MPP 视频硬件编解码-代码版
  • uniapp 预加载分包,减少loading
  • c#删除文件和目录到回收站
  • GESP2024年12月认证C++六级( 第三部分编程题(1)树上游走)
  • Redis数据结构服务器
  • 【向量数据库 Milvus】centos8源码安装和部署 Milvus 2.5.3
  • MySQL数据库(SQL分类)
  • C++实现设计模式---原型模式 (Prototype)
  • 鸿蒙面试 2025-01-10
  • Linux Top 命令 load average 指标解读
  • 31_搭建Redis分片集群