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

MySQL 8.3 发布, 它带来哪些新变化?

1月16号 MySQL 官方发布 8.3 创新版 和 8.0.36 长期支持版本 (该版本 没有新增功能,更多是修复bug ),本文基于 官方文档 说一下 8.3 版本带来的变化。

一 增加的特性

1.1 GTID_NEXT 支持增加 TAG 选项。

之前的版本中 GTID_NEXT=UUID:number ,现在可以增加 一个 tag 字符串 GTID_NEXT=UUID:[TAG]:number ,用来对事务进行标示。 具体的用例如下:

mysql> show master status \G
*************************** 1. row ***************************File: mysql-bin.000001Position: 158Binlog_Do_DB:Binlog_Ignore_DB:
Executed_Gtid_Set:  
1 row in set, 1 warning (0.00 sec)mysql> insert into t(a) values(2);
Query OK, 1 row affected (0.00 sec)
mysql> show master status \G
*************************** 1. row ***************************File: mysql-bin.000001Position: 435Binlog_Do_DB:Binlog_Ignore_DB:
Executed_Gtid_Set:  00008300-0000-0000-0000-000000008300:1
1 row in set, 1 warning (0.00 sec)### 在会话级别设置 gtid_next 的值mysql> set session  gtid_next='00008300-0000-0000-0000-000000008300:yangyidba:3';
Query OK, 0 rows affected (0.00 sec)
mysql> insert into t(a) values(2);
Query OK, 1 row affected (0.00 sec)mysql> show master status \G
*************************** 1. row ***************************File: mysql-bin.000001Position: 722Binlog_Do_DB:Binlog_Ignore_DB:
Executed_Gtid_Set:  00008300-0000-0000-0000-000000008300:1:yangyidba:3  ## 变成系统值和手工指定的2个值的结合
1 row in set, 1 warning (0.00 sec)mysql> insert into t(a) values(2);
Query OK, 1 row affected (0.00 sec)mysql> show master status \G
*************************** 1. row ***************************File: mysql-bin.000001Position: 995Binlog_Do_DB:Binlog_Ignore_DB:
Executed_Gtid_Set:  00008300-0000-0000-0000-000000008300:1:yangyidba:1:3 
1 row in set, 1 warning (0.00 sec)mysql> set session  gtid_next='00008300-0000-0000-0000-000000008300:yangyidba:2';
Query OK, 0 rows affected (0.00 sec)mysql> insert into t(a) values(2);
Query OK, 1 row affected (0.00 sec)mysql> show master status \G
*************************** 1. row ***************************File: mysql-bin.000001Position: 1296Binlog_Do_DB:Binlog_Ignore_DB:
Executed_Gtid_Set:  00008300-0000-0000-0000-000000008300:1:yangyidba:1-3 
1 row in set, 1 warning (0.00 sec)
mysql> set session gtid_next='AUTOMATIC';
Query OK, 0 rows affected (0.00 sec)
mysql> insert into t(a) values(2);
Query OK, 1 row affected (0.00 sec)mysql> show master status \G
*************************** 1. row ***************************File: mysql-bin.000001Position: 1296Binlog_Do_DB:Binlog_Ignore_DB:
Executed_Gtid_Set:  00008300-0000-0000-0000-000000008300:1-2:yangyidba:1-3 
1 row in set, 1 warning (0.00 sec)

刚好玩的用法 可以参考 https://lefred.be/content/mysql-8-3-purging-data-from-your-innodb-cluster/。

1.2 EXPLAIN FORMAT=JSON 可选版本为1或者2

引入 explain_json_format_version 参数调整 explain json 格式的输出 。设置 explain_json_format_version=1 时 ,explain format=json的输出如下

{"query_block": {"select_id": 1,"cost_info": {"query_cost": "1.35"},"table": {"table_name": "t","access_type": "ALL","rows_examined_per_scan": 11,"rows_produced_per_join": 11,"filtered": "100.00","cost_info": {"read_cost": "0.25","eval_cost": "1.10","prefix_cost": "1.35","data_read_per_join": "176"},"used_columns": ["id","a"]}}
} |

设置 explain_json_format_version=2 时 ,explain format=json的输出如下

 {"query": "/* select#1 */ select `test`.`t`.`id` AS `id`,`test`.`t`.`a` AS `a` from `test`.`t`","operation": "Table scan on t","table_name": "t","access_type": "table","schema_name": "test","used_columns": ["id","a"],"estimated_rows": 11.0,"estimated_total_cost": 1.35
}
1.3 binlog_transaction_dependency_tracking 参数默认值改为 WRITESET

注意: 如果binlog_transaction_dependency_tracking设置为WRITESET或WRITESET_SESSION,binlog_format必须是ROW;MIXED在这种情况下不再受支持。

二 删除的功能 ,参数

2.1 移除参数
slave-rows-search-algorithms
log_bin_use_v1_events
relay-log-info-file
relay-log-info-repository
master-info-file
master-info-repository
transaction_write_set_extraction
skip-host-cache 
innodb 
skip-innodb
character-set-client-handshake 
old-style-user-limits

group_replication_ip_whitelistgroup_replication_ip_allowlist 替代

不再需要 group_replication_primary_member ,可以通过查看performance_schema.replication_group_members中的member_role字段。

三 Performance Schema Notes

  1. 大量的查询 SELECT * from performance_schema.data_locks 会导致 内存增加 和死锁。

四 Thread Pool Notes

  1. 增加 一个系统表 tp_connections 记录 连接池中每个链接的信息。

  2. tp_thread_state table:增加如下字段

    TIME_OF_ATTACH, 
    MARKED_STALLED,
    STATE,
    EVENT_COUNT, 
    ACCUMULATED_EVENT_TIME, 
    EXEC_COUNT, 
    ACCUMULATED_EXEC_TIME
    
  3. tp_thread_group_state :

    EFFECTIVE_MAX_TRANSACTIONS_LIMIT, 
    NUM_QUERY_THREADS, 
    TIME_OF_LAST_THREAD_CREATION, 
    NUM_CONNECT_HANDLER_THREAD_IN_SLEEP, 
    THREADS_BOUND_TO_TRANSACTION, 
    QUERY_THREADS_COUNT, 
    TIME_OF_EARLIEST_CON_EXPIRE
    

关于 Oracle MySQL 版本模型

Oracle 推出 MySQL 创新版长期支持(LTS)版,这是MySQL版本模型的重要改进。

创新版和长期支持(LTS)版都具备生产级的质量。如果您希望获取最新的功能和改进,并保持对最新技术的了解,MySQL创新版可能最适合您。这些发布版本非常适用于在快节奏的开发环境中工作的开发人员和数据库管理员,他们拥有高度自动化的测试和现代持续集成技术,以实现更快的升级周期。另一方面,如果您的环境需要稳定的行为,那么长期支持(LTS)版是最合适的选择。这些版本仅包含必要的修复,因此可以降低与数据库软件行为变化相关的风险。

以下内容翻译自 Oracle mysql 团队的官方blog , 肯定有读者朋友 对 为什么有 8.3.0 这样的版本出来,有疑问?下面其实就是官方的解答。

过渡到创新版和长期支持(LTS)版

我们将在即将发布的版本中过渡到新的MySQL版本模型。MySQL数据库版本 8.1.0 将是我们的第一个创新版,而 8.0.34+ 将在 8.0 版本的生命周期结束(预计为2026年4月)之前只提供bug修复。大约一年后,MySQL 8.x 最终将成为长期支持(LTS)版,用户将有足够的时间从 8.0.x 迁移到 8.x LTS 版本。

在实践中,在这个过渡期内,如果您希望获得MySQL数据库的最新功能、改进和所有bug修复,请使用创新版(例如8.1.x、8.2.x、8.3.x等)。如果您只需要MySQL数据库的bug修复,请使用8.0.x版本(例如8.0.35、8.0.36、8.0.37等)。在这两种情况下,您应该根据Oracle关键补丁更新(CPU)日历计划每季度更新您的MySQL数据库。当8.x成为长期支持(LTS)版时,您可以计划、测试并从8.0.x的bug修复版本迁移到长期支持(LTS)版(例如从8.0.37迁移到8.4.1)。

相关文章:

MySQL 8.3 发布, 它带来哪些新变化?

1月16号 MySQL 官方发布 8.3 创新版 和 8.0.36 长期支持版本 (该版本 没有新增功能,更多是修复bug ),本文基于 官方文档 说一下 8.3 版本带来的变化。 一 增加的特性 1.1 GTID_NEXT 支持增加 TAG 选项。 之前的版本中 GTID_NEXTUUID:number &#xff…...

【数据结构】详谈队列的顺序存储及C语言实现

循环队列及其基本操作的C语言实现 前言一、队列的顺序存储1.1 队尾指针与队头指针1.2 基本操作实现的底层逻辑1.2.1 队列的创建与销毁1.2.2 队列的增加与删除1.2.3 队列的判空与判满1.2.4 逻辑的局限性 二、循环队列2.1 循环队列的实现逻辑一2.2 循环队列的实现逻辑二2.3 循环队…...

为什么 HTTPS 协议能保障数据传输的安全性?

HTTP 协议 在谈论 HTTPS 协议之前,先来回顾一下 HTTP 协议的概念。 HTTP 协议介绍 HTTP 协议是一种基于文本的传输协议,它位于 OSI 网络模型中的应用层。 HTTP 协议是通过客户端和服务器的请求应答来进行通讯,目前协议由之前的 RFC 2616 拆…...

使用 Node 创建 Web 服务器

Node.js 提供了 http 模块,http 模块主要用于搭建 HTTP 服务端和客户端,使用 HTTP 服务器或客户端功能必须调用 http 模块,代码如下: var http require(http); 以下是演示一个最基本的 HTTP 服务器架构(使用 8080 端口)&#x…...

leetcode 151反转字符串如何原地去除多余空格

题目:https://leetcode.cn/problems/reverse-words-in-a-string/description/ 完整题解:https://leetcode.cn/problems/reverse-words-in-a-string/solutions/2611893/chu-li-kong-ge-ku-han-shu-reversefan-zhu-bioo 思路来自代码随想录,对其中的除去多…...

面试问题记录【深圳,共三面,A 轮公司】

问题记录 一面: 自我介绍项目介绍项目中用到的本地缓存是否涉及数据不一致问题,如何解决?项目中用到了 RTree 和普通的 B 树和 B树的数据结构的区别是什么?mysql 数据库中几种日志的用法和区别?redis 中缓存三兄弟存…...

Mysql数据库cpu飙升怎么解决

排查过程 (1)使用top命令观察,确定是mysql导致还是其他原因。 (2)如果是mysql导致的,show processlist,查看session情况,确定是不是有消耗资源的sql在运行。 (3&#xf…...

PHP反序列化漏洞-POP链构造

POP链构造 POP链(Property-Oriented Programming)是一种常用于构造特定调用链的方法,用于从现有运行环境中寻找一系列代码或指令调用。它的目的是构成一组连续的调用链,最终达到攻击者恶意利用的目的。POP链实质上是通过控制对象的可控属性来控制程序的执行流程,从而利用…...

CentOS 7安装Java并配置环境

一、安装Java环境 1、检查系统是否安装Java [rootlocalhost ~]# java -version 2、更新系统软件包 [rootlocalhost ~]# yum update #遇到[y/n],选择y并回车,耐心等待下载完毕,之后系统会自动检验更新的软件包遇到 /var/run/yum.pid 已被锁定 /var/…...

Vagrant创建Oracle RAC环境示例

利用Vagrant安装Oracle RAC(默认为non-CDB模式),生成2台虚机,耗时约1小时。 node1: -----------------------------------------------------------------node1: INFO: 2024-01-11 18:25:54: Make create database commandnode1: …...

鸿蒙 HarmonyOS ArkTS ArkUI 动画 中心缩放、顶部缩放、纵向缩放

EntryComponentstruct Index {State widthA: number 200State heightA: number 200onPageShow():void{animateTo ( {duration: 2000,iterations: -1,curve:Curve.Linear}, () > {this.widthA 0this.heightA 0} )}build() {Column() {// 中心缩放Column(){}.width(this.wi…...

基于python socket实现TCP/UDP通信

两个应用程序如果需要进行通讯最基本的一个前提就是能够唯一的标示一个进程,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中…...

指针的运算

指针的运算 1.指针-整数 #define N_VALUES 5 float values[N_VALUES]; float* vp; //指针-整数:指针的关系运算 int main() { for (vp &values[0]; vp < &values[N_VALUES];) { *vp 0;//指针每自增一次,就是指向下一个元素的地址 } return …...

记录一次QT乱码问题

问题描述 在敲陆文周的书《QT5开发及实例》的示例代码时&#xff0c;出现乱码&#xff0c;如下图所示 具体代码如下 Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);ui->treeWidget->clear();int groupSize 2;int ite…...

怎么提升搜狗网站排名

在当今数字化时代&#xff0c;网站排名对于品牌、企业以及个人都至关重要。而对于许多网站来说&#xff0c;搜狗搜索引擎是一个重要的流量来源。为了在搜狗上取得更好的排名&#xff0c;不仅需要优化网站内容&#xff0c;还需要巧妙运用一些工具和技巧。在本文中&#xff0c;我…...

搜索经典题——填充 9*9矩阵

题目&#xff1a;给定一个九行九列矩阵&#xff0c;填充矩阵元素&#xff0c;要求&#xff1a; 1、每一行每一列&#xff0c;每个小九宫格&#xff08;图片画粗的地方就是&#xff09;不能包含相同元素 2、每一行&#xff0c;每一列&#xff0c;每个小九宫格均会完整出现1-9的数…...

Vue待办事项(组件,模块化)

//html页面代码 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title></title> <style> * { padding: 0; margin: 0; }…...

Vue中的组件

在应用程序的开发中&#xff0c;组件是不可缺少的。在Vue的使用中&#xff0c;同样也会用到组件。   vue组件的一般知识点&#xff1a;   1、组件的名字唯一&#xff1b;   2、组件以Html形式书写&#xff1b;   3、组件可以复用&#xff1b;   4、组件可以嵌套&…...

svg矢量图标在wpf中的使用

在wpf应用程序开发中&#xff0c;为支持图标的矢量缩放&#xff0c;及在不同分辨率下界面中图标元素的矢量无损缩放&#xff0c;所以常常用到svg图标&#xff0c;那么如果完 美的将svg图标运用到wpf日常的项目开发中呢&#xff0c;这里分享一下我的个人使用经验和详细步骤。 步…...

如何在云端加速缓存构建

缓存是指将某类数据存储起来以便以后重复使用的过程&#xff0c;它的运用在开发场景中非常普遍。类似于你习惯把最常用的调料放在厨房台面上&#xff0c;而不是橱柜里&#xff0c;这样你在准备大餐时就可以轻松取用。 但对于一个更为技术性、更精确的用例&#xff0c;比如像谷…...

想入门脑机接口?这5个免费EEG数据集帮你从理论到实战(含Python处理示例)

想入门脑机接口&#xff1f;这5个免费EEG数据集帮你从理论到实战&#xff08;含Python处理示例&#xff09; 当你第一次听说脑机接口&#xff08;BCI&#xff09;时&#xff0c;脑海中浮现的可能是科幻电影中那些炫酷的场景——用意念控制机械臂、通过思维与计算机交互。但现实…...

别再只调headingPitchRoll了!深入Cesium矩阵变换,从原理到代码理解模型朝向控制

深入Cesium矩阵变换&#xff1a;从数学原理到模型朝向控制的实战指南 在三维地理可视化领域&#xff0c;精确控制模型朝向一直是开发者面临的挑战。许多开发者习惯使用现成的headingPitchRoll方法&#xff0c;但当遇到复杂场景如极地附近模型旋转异常时&#xff0c;往往束手无策…...

Phi-3-Mini-128K实操手册:模型加载耗时优化技巧——分层加载与缓存机制应用

Phi-3-Mini-128K实操手册&#xff1a;模型加载耗时优化技巧——分层加载与缓存机制应用 1. 项目概述 Phi-3-Mini-128K是基于微软Phi-3-mini-128k-instruct模型开发的轻量化对话工具&#xff0c;专为本地部署和高效推理场景设计。该工具通过多项技术创新&#xff0c;显著提升了…...

矢量网络分析仪(VNA)校准实战:从原理到操作全解析

1. 矢量网络分析仪校准的核心原理 第一次接触矢量网络分析仪&#xff08;VNA&#xff09;时&#xff0c;我完全被那些复杂的S参数曲线搞懵了。直到老师傅告诉我&#xff1a;"VNA就是个高级照妖镜&#xff0c;校准就是给它配副好眼镜"。这个比喻让我恍然大悟——没有校…...

零基础入门:收藏必备!从Agent概念到实战构建,小白也能掌握AI新趋势

本文系统梳理了AI Agent的核心概念、原理及构建模式&#xff0c;通过对比ReAct和Plan-and-Execute等主流模式&#xff0c;阐述了Agent如何从被动对话转向主动行动。文章详细介绍了构建Agent的思路和关键组件&#xff0c;如主程序、行为说明书和工具集&#xff0c;适合对AI Agen…...

CMIP6数据降尺度实战:用Python从零构建区域气候模型(附完整代码)

CMIP6数据降尺度实战&#xff1a;用Python从零构建区域气候模型 当全球气候模型&#xff08;GCM&#xff09;的分辨率无法满足区域研究需求时&#xff0c;降尺度技术成为连接全球与局部气候信息的桥梁。本文将带您从CMIP6数据获取开始&#xff0c;逐步实现统计降尺度和动力降尺…...

【CP AUTOSAR】Icu驱动模块:从原理到实战的配置与优化指南

1. Icu驱动模块在AUTOSAR架构中的核心作用 第一次接触AUTOSAR的Icu模块时&#xff0c;我完全被它复杂的配置项搞懵了。直到在S32K3项目上实际调试电机转速测量功能&#xff0c;才真正理解这个模块的价值。简单来说&#xff0c;Icu就像汽车电子系统的"脉搏检测仪"&…...

直接上干货,咱们用粒子群算法给PID控制器做个暴力调参。传统PID参数调整像盲人摸象,PSO(粒子群优化)相当于派出一群带雷达的无人机直接扫描整片山区找最优解

基于粒子群算法的PID控制优化算法案例 matlab源代码 代码有详细注释&#xff0c;完美运行先看目标——让这个二阶系统达到最顺滑的响应&#xff1a; % 被控对象传递函数 sys tf(1, [1 3 2]); t 0:0.01:10; % 时间序列 粒子群的核心配置得够骚&#xff1a; %% PSO参…...

OpenLdap部署

背景 很多开源软件支持Ldap,比如Jenkins、Grafana、Gitlab、Jumpserver等。其中Ldap只保留数据库和密码。权限控制在各个应用里去控制。 常用运维命令 # 创建 ou=people 组织单元 ldapadd -x -D "cn=admin,dc=lf,dc=org" -w "123456" <<EOF dn: …...

CMW500实战指南:BLE射频关键指标测试与优化

1. CMW500与BLE测试基础入门 第一次接触CMW500进行BLE射频测试时&#xff0c;我被这个"黑盒子"复杂的按键界面吓到了。但实际用下来发现&#xff0c;只要掌握几个关键操作&#xff0c;就能快速完成BLE设备的核心指标验证。CMW500作为罗德与施瓦茨的旗舰级测试仪&…...