MySQL Server 8.3.0 重要变更解析

MySQL Server 8.3.0 Innovation 版本是 MySQL 8.x 系列最后一个创新版本,下个月即将迎来 MySQL 8.4.0 LTS 长期支持版本。

关于发版模型变更,在之前的文章 重磅!MySQL 8.1.0 已来! 中已有所介绍。

这里补充一点,对于 MySQL 8.x 系列,8.4.x 将作为 LTS 长期支持版本,而从 9.x 开始,9.7.x 将作为 LTS 长期支持版本。

这在源码的编译文件中也有所体现。

  # Versions like 8.0.x, 8.4.x, and x.7.y (x > 8) should be LTS
  IF ((MAJOR_VERSION EQUAL "8" AND MINOR_VERSION EQUAL "0" AND PATCH_VERSION GREATER "34") OR
      (MAJOR_VERSION EQUAL "8" AND MINOR_VERSION EQUAL "4") OR
      (MAJOR_VERSION GREATER "8" AND MINOR_VERSION EQUAL "7"))
    IF (NOT MYSQL_VERSION_STABILITY STREQUAL "\"LTS\"")
      MESSAGE(FATAL_ERROR "Version ${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION} should "
                          "be an LTS release.")
    ENDIF()
  ELSE()
    IF (NOT MYSQL_VERSION_STABILITY STREQUAL "\"INNOVATION\"")
      MESSAGE(FATAL_ERROR "Version ${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION} should "
                          "be an innovation release.")
    ENDIF()
  ENDIF()

言归正传,接下来一起来看下 MySQL 8.3.0 都有哪些变化。

1. 平台支持

随着时间的推移,MySQL 支持的平台发生了变化,例如:

  • 8.3 不再支持 Oracle Linux 6 / Red Hat Enterprise Linux 6 / CentOS 6
  • 8.3 不再支持 Microsoft Windows 10

2. 新特性

在认证方面,Windows 平台上现在支持基于 SASL 的 LDAP 认证,这为使用 Windows 客户端程序的用户提供了更多选择。

MySQL 企业版数据掩码和去标识化组件新增了将数据刷新到内存的能力,这有助于提高数据处理的效率。

同时,MySQL 企业版还新增了使用 OpenTelemetry 格式收集服务器指标数据的遥测功能,这对于监控和优化服务器性能非常有用。

3. 复制

复制 with GTID 方面,扩展了全局事务标识符(GTID)的格式,以支持通过标签标识事务组,增强了对复制和组复制中事务的识别和管理。

新 GTID 格式为 UUID:<TAG>:NUMBER,该功能通过系统参数 gtid_next=AUTOMATIC:<TAG> 进行控制。

mysql> set gtid_next='AUTOMATIC:tag_shawnyan';
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'gtid%';
+----------------------------------+-------------------------------------------------------+
| Variable_name                    | Value                                                 |
+----------------------------------+-------------------------------------------------------+
| gtid_executed                    | bdb6b1eb-eb90-11ee-ae1d-0242ac110002:tag_shawnyan:1-2 |
| gtid_executed_compression_period | 0                                                     |
| gtid_mode                        | ON                                                    |
| gtid_next                        | AUTOMATIC:tag_shawnyan                                |
...

MySQL 8.3 还解决了与复制和组复制相关的多个问题。

例如,现在 group_replication_set_as_primary() 函数在选举新的主节点之前会等待 DDL 和 DCL 语句完成,这有助于确保数据的一致性和完整性。

同时,还修复了一些可能导致内存泄漏、错误监控线程和锁问题的问题。

4. 系统参数

MySQL 8.3.0 有 1 个系统参数的默认值发生变更,新增 1 个参数,移除 6 个参数。

1. binlog_transaction_dependency_tracking

该系统变量在 MySQL 8.2.0 中已弃用。为了准备最终删除这个变量,它的默认值由 COMMIT_ORDER 变更为 WRITESET

binlog_transaction_dependency_tracking 设置为 WRITESET 有助于提升组复制的性能。

2. explain_json_format_version

新增参数 explain_json_format_version,用于指定 EXPLAIN FORMAT = JSON 语句使用的 JSON 输出格式。

默认值为 1,表示传统输出格式,与之前样式保持一致。

可以设定为 2,表示基于路径访问的新格式,用于提供与未来版本的 MySQL 优化器更好的兼容性。

示例如下:

mysql> explain table t1\G
*************************** 1. row ***************************
EXPLAIN: {
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost""0.35"
    },
    "table": {
      "table_name""t1",
      "access_type""ALL",
      "rows_examined_per_scan": 1,
      "rows_produced_per_join": 1,
      "filtered""100.00",
      "cost_info": {
        "read_cost""0.25",
        "eval_cost""0.10",
        "prefix_cost""0.35",
        "data_read_per_join""224"
      },
      "used_columns": [
        "id",
        "n1",
        "n2"
      ]
    }
  }
}
1 row in set, 1 warning (0.00 sec)

Note (Code 1003): /* select#1 */ select `s1`.`t1`.`id` AS `id`,`s1`.`t1`.`n1` AS `n1`,`s1`.`t1`.`n2` AS `n2` from `s1`.`t1`
mysql> set explain_json_format_version = 2;
Query OK, 0 rows affected (0.00 sec)

mysql> explain table t1\G
*************************** 1. row ***************************
EXPLAIN: {
  "query""/* select#1 */ select `s1`.`t1`.`id` AS `id`,`s1`.`t1`.`n1` AS `n1`,`s1`.`t1`.`n2` AS `n2` from `s1`.`t1`",
  "operation""Table scan on t1",
  "table_name""t1",
  "access_type""table",
  "schema_name""s1",
  "used_columns": [
    "id",
    "n1",
    "n2"
  ],
  "estimated_rows": 1.0,
  "estimated_total_cost": 0.35
}
1 row in set (0.02 sec)

再例,查看分区表的执行计划:

mysql> set explain_json_format_version = 1;
Query OK, 0 rows affected (0.00 sec)

mysql> explain select CUSTOMER_ID, TRADE_D from tp where TRADE_D = '2024-01-01'\G
*************************** 1. row ***************************
EXPLAIN: {
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost""0.45"
    },
    "table": {
      "table_name""tp",
      "partitions": [
        "p202401"
      ],
      "access_type""ref",
      "possible_keys": [
        "PRIMARY",
        "idx_tp"
      ],
      "key""idx_tp",
      "used_key_parts": [
        "TRADE_D"
      ],
      "key_length""5",
      "ref": [
        "const"
      ],
      "rows_examined_per_scan": 2,
      "rows_produced_per_join": 2,
      "filtered""100.00",
      "using_index"true,
      "cost_info": {
        "read_cost""0.25",
        "eval_cost""0.20",
        "prefix_cost""0.45",
        "data_read_per_join""128"
      },
      "used_columns": [
        "CUSTOMER_ID",
        "TRADE_D"
      ]
    }
  }
}
1 row in set, 1 warning (0.00 sec)

Note (Code 1003): /* select#1 */ select `s1`.`tp`.`CUSTOMER_ID` AS `CUSTOMER_ID`,`s1`.`tp`.`TRADE_D` AS `TRADE_D` from `s1`.`tp` where (`s1`.`tp`.`TRADE_D` = TIMESTAMP'2024-01-01 00:00:00')
mysql>

mysql> set explain_json_format_version = 2;
Query OK, 0 rows affected (0.00 sec)

mysql> explain select CUSTOMER_ID, TRADE_D from tp where TRADE_D = '2024-01-01'\G
*************************** 1. row ***************************
EXPLAIN: {
  "query""/* select#1 */ select `s1`.`tp`.`CUSTOMER_ID` AS `CUSTOMER_ID`,`s1`.`tp`.`TRADE_D` AS `TRADE_D` from `s1`.`tp` where (`s1`.`tp`.`TRADE_D` = TIMESTAMP'2024-01-01 00:00:00')",
  "covering"true,
  "operation""Covering index lookup on tp using idx_tp (TRADE_D=TIMESTAMP'2024-01-01 00:00:00')",
  "index_name""idx_tp",
  "table_name""tp",
  "access_type""index",
  "schema_name""s1",
  "used_columns": [
    "CUSTOMER_ID",
    "TRADE_D"
  ],
  "estimated_rows": 2.0,
  "lookup_condition""TRADE_D=TIMESTAMP'2024-01-01 00:00:00'",
  "index_access_type""index_lookup",
  "estimated_total_cost": 0.45164473684210527
}
1 row in set (0.00 sec)

可以看到新格式的执行计划更加简洁,不过没有显示查询具体命中哪个分区。

3. 移除的系统变量

MySQL 8.3.0 中,与 MySQL 复制相关的一些变量被移除,具体如下:

  1. log_bin_use_v1_row_events

该参数从 MySQL 8.0.18 被废弃,曾用于 MySQL 5.5 及更早的版本,表示 v1 binlog 日志行事件。

  1. master_info_repository

该参数从 MySQL 8.0.23 被废弃,默认情况下,将复制连接的元信息写入 mysql.slave_master_info 表。

之前写入文件的选项也已经从 MySQL 8.0.18 被废弃。

  1. relay_log_info_repository

同上。

  1. relay_log_info_file

该参数从 MySQL 8.0.18 被废弃,在 8.3.0 中被移除。

  1. slave_rows_search_algorithms

用于副本批处理的搜索算法,控制是否使用索引扫描和 HASH 扫描。从 MySQL 8.0.18 被废弃。

默认设定为使用索引扫描,然后进行哈希扫描,这适用于全场景,且是最佳性能方式。

  1. transaction_write_set_extraction

该系统变量指定用于对事务期间提取的写入进行哈希处理的算法。从 MySQL 8.0.26 被废弃。

当开启组复制时,transaction_write_set_extraction 需要设定为 XXHASH64,用于事务冲突检测和认证。

该参数的另外一个值为 MURMUR32,是 32 位算法,不适用于大负荷场景,不建议使用。

总结

总的来说,MySQL 8.3.0 版本的发布为用户提供了更稳定、更高效、更安全的数据库解决方案。

期待,MySQL 8.4.0 LTS 的到来。

-- END --

alt

如果这篇文章为你带来了灵感或启发,就帮忙点『赞』or『在看』or『转发』吧,这对我非常重要,感谢!(๑˃̵ᴗ˂̵)

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/502375.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

国家发改委特许经营方案对公共数据运营的思考

数据交易所自贵州大数据交易所成立以来&#xff0c;已经有无数数据交易所像春笋一样在中华大地冒出来。随着国家数据局的成立、数据要素二十条的发布&#xff0c;各地数据交易所开启了竞赛机制&#xff0c;在数据体量、数商数量、交易规模等指标展开博弈。 公共数据运营是否会马…

Spring6-代理模式 / AOP切面编程

目录 1. 场景模拟 1.1. 声明接口 1.2. 创建实现类 1.3. 创建带日志功能的实现类 1.4. 提出问题 2. 代理模式 2.1. 概述 2.2. 静态代理 2.3. 动态代理 3. AOP切面编程 3.1. 概述 3.2. 相关术语 3.2.1. 横切关注点 3.2.2. 通知&#xff08;增强&#xff09; 3.2.3…

【JavaSE】java刷题--数组练习

前言 本篇讲解了一些数组相关题目&#xff08;主要以代码的形式呈现&#xff09;&#xff0c;主要目的在于巩固数组相关知识。 上一篇 数组 讲解了一维数组和二维数组的基础知识~ 欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎…

大创项目推荐 深度学习 opencv python 实现中国交通标志识别_1

文章目录 0 前言1 yolov5实现中国交通标志检测2.算法原理2.1 算法简介2.2网络架构2.3 关键代码 3 数据集处理3.1 VOC格式介绍3.2 将中国交通标志检测数据集CCTSDB数据转换成VOC数据格式3.3 手动标注数据集 4 模型训练5 实现效果5.1 视频效果 6 最后 0 前言 &#x1f525; 优质…

HTX Ventures:为什么BounceBit可能成为新的BTC生态解决方案?

随着BTC现货ETF的通过&#xff0c;全球各大机构和个人都在不断加码对BTC的持仓&#xff0c;BTC价格也随之上升&#xff0c;目前已上升至全球市值排名前十的资产。在本轮市场周期中&#xff0c;BTC铭文和BTC扩容是两个被市场高度关注的细分赛道。BTC生态资产的多元化收益探索正在…

TypseScript再学习之类型别名和接口(10)

先看类型别名&#xff1a;使用关键字 type 声明,注意有等于号额 // 类型别名 使用关键字 type 声明,注意有等于号额 type Cat {name: string; }; let huahua: Cat {name: "花花", };type和interface不同之处在于&#xff1a;interface 是可以自动合并类型的&#…

Linux shell编程学习笔记43:cut命令

0 前言 在 Linux shell编程学习笔记42&#xff1a;md5sum 中&#xff0c;md5sum命令计算md5校验值后返回信息的格式是&#xff1a; md5校验值 文件名 包括两项内容&#xff0c;前一项是md5校验值 &#xff0c;后一项是文件名。 如果我们只想要前面的md5 校验值&#xff0c…

计算机网络—UDP协议详解:特性、应用

​ &#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;マリンブルーの庭園—ずっと真夜中でいいのに。 0:34━━━━━━️&#x1f49f;──────── 3:34 &#x1f504; ◀…

Rust 02.控制、引用、切片Slice、智能指针

1.控制流 //rust通过所有权机制来管理内存&#xff0c;编译器在编译就会根据所有权规则对内存的使用进行 //堆和栈 //编译的时候数据的类型大小是固定的&#xff0c;就是分配在栈上的 //编译的时候数据类型大小不固定&#xff0c;就是分配堆上的 fn main() {let x: i32 1;{le…

美术馆设计方案优化布局与设施提升观众体验!

如今&#xff0c;美术馆不仅仅是作为展示艺术作品的平台&#xff0c;也是吸引公众参与和创造独特体验的数字艺术体验空间&#xff0c;因此许多传统美术馆在进行翻修改造时&#xff0c;都会更加注重用户体验&#xff0c;并在其中使用大量的多媒体互动&#xff0c;让参观者能够在…

基于 YOLO V8 Fine-Tuning 训练自定义的目标检测模型

一、YOLO V8 YOLO V8 是由 2023 年 ultralytics 公司开源的发布&#xff0c;是结合了前几代 YOLO 的融合改进版。YOLO V8 支持全方位的视觉 AI 任务&#xff0c;包括检测、分割、姿态估计、跟踪和分类。并且在速度和准确性方面具有无与伦比的性能。能够应用在各种对速度和精度…

【重制版】在Android手机上安装kali Linux

前言 由于kali官方的Nethunter2的安装代码因为…无法访问&#xff0c;手头又没有一些受支持的机器3&#xff0c;所以做了这个脚本&#xff0c;供大家使用。 工具 搭载基于Android的手机TermuxVNC Viewer 安装必备软件(如已安装请忽略) 请到 https://www.hestudio.net/post…

制造出海,灵途科技助力割草机器人、泳池清洁机器人全方位感知

近年来&#xff0c;越来越多的中国企业开始对外开拓&#xff0c;走向海外市场、挖掘和满足全球消费者的需求。在消费机器人领域&#xff0c;中国企业出海成绩亮眼&#xff01;在2024 ces 和上海AWE展会上&#xff0c;多家机器人公司展示了家用智能割草机器人、泳池清洁机器人的…

C#基础知识总结

C语言、C和C#的区别 ✔ 面向对象编程&#xff08;OOP&#xff09;&#xff1a; C 是一种过程化的编程语言&#xff0c;它不直接支持面向对象编程。然而&#xff0c;C 是一种支持 OOP 的 C 的超集&#xff0c;它引入了类、对象、继承、多态等概念。C# 是完全面向对象的&#xff…

【C++】string类(常用接口)

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;http://t.csdnimg.cn/eCa5z 目录 修改操作 push_back append operator assign insert erase replace c_str find string类非成…

淘宝商品详情数据(商品分析,竞品分析,代购商城建站与跨境电商,ERP系统商品数据选品)

淘宝商品详情数据在多个业务场景中发挥着关键作用&#xff0c;以下是一些主要的应用场景&#xff1a; 请求示例&#xff0c;API接口接入Anzexi58 商品分析&#xff1a;通过对淘宝商品详情的全面分析&#xff0c;商家可以深入了解商品的属性、价格、销售量、评价等信息。这些数…

手写简易操作系统(十八)--实现用户进程

一、TSS TSS是Task State Segment的缩写&#xff0c;即任务状态段&#xff0c;早在简述特权级的时候我们就讲过了一点 手写简易操作系统(八)&#xff0c;现在我们讲一下这些保存的寄存器是干嘛的。 这一部分需要讲点历史&#xff0c;硬件与软件的关系是相互促进的&#xff0c…

基于SpringBoot + Vue实现的中国陕西民俗网设计与实现+毕业论文

介绍 本系统包含管理员、用户两个角色。 管理员角色&#xff1a;登录、用户管理功能、民俗介绍管理功能(发布和管理民俗文化的介绍文章)、公告信息管理功能(发布网站的重要通知和活动信息)、商品管理功能(对商家发布的商品进行监管)、商品评价管理功能(监管商品评价内容&#…

乐理通识

2023 年搞了台雅马哈 61 键的电子琴&#xff0c;顺手看了下啊 B 的上的课程 《零基础自学音乐学乐理合集-第一季》&#xff0c;这里是部分笔记&#xff08;给博客加点不一样的东西&#x1f440;&#xff09;。 简谱各部分一览 C 表示音名竖线为小节线 音名 完整钢琴键盘 88 键…

leetcode:392. 判断子序列

题目&#xff1a; class Solution { public:bool isSubsequence(string s, string t) {} }; 题解&#xff1a; 很巧妙的题解&#xff1a;循环遍历两个字符串&#xff0c;两个字符串都没遍完就继续遍历&#xff0c;字符串s先遍历完结果为true&#xff0c;字符串t先遍历完结果为…