MySQL 8.4.3 和 9.1.0:显著提升性能!

我们很高兴地报告,最新版本 8.4.3 和 9.1.0 展示了显着的性能改进!

作者:Przemyslaw Skibinski。

本文和封面来源:https://www.percona.com/blog/mysql-8-4-3-and-9-1-0-major-performance-gains-revealed/,爱可生开源社区翻译。

本文约 800 字,预计阅读需要 3 分钟。

在 Percona,我们始终优先考虑性能,而 MySQL 的最新发展趋势一直是我们关注的焦点。特别是,MySQL 8.4.x 和 9.y 版本中的性能恶化引起了我们的注意,正如 Marco Tusa 的博客文章《Sakila 何去何从?》 中所提到的。

我们很高兴地报告,最新版本 8.4.3 和 9.1.0(于 2024 年 10 月发布)展示了显着的性能改进,如下表一所示。

在这里插入图片描述

表 1:针对不同工作负载,MySQL 8.4.3 与 MySQL 8.4.2 的每秒查询次数 (QPS) 的改进。

有关我们的测试方法、使用的 sysbench 压测以及硬件配置的详细信息,请参阅我们之前的博客文章: 《Percona Server for MySQL 性能改进》

如表 1 所示,相同的结果以堆叠图的形式呈现在下面,以直观地展示改进。

在这里插入图片描述

出于好奇,我们深入研究了这些优化的根源,并确定了导致这些增强的三个关键变化。

1. Binlog 事务依赖切换

参考 Bug:#37008442

binlog_transaction_dependency 的数据结构从 std::map 更改为 ankerl::unordered_dense::map,这带来了显着的性能提升。

这一改进,提高了 INLIST_UPDATE 和 UPDATE_INDEX_LIMIT 等工作负载的效率,平均性能提升了 19.4%,令人印象深刻!

2. 使用 JOINS 优化查询执行

参考 Bug:#35531293

在以往的 MySQL 版本中反复出现的一个问题,与使用 JOINS 的查询相比,MySQL 8.0.33 中观察到的性能下降。此优化解决了效率低下的问题,为 POINTS_COVERED_SI 和 POINTS_NOTCOVERED_SI 等工作负载的 平均性能提升了 2.17%

3. 改进的索引范围扫描

参考 Bug:#36775910

在以往的版本中,索引范围扫描中缺少记录缓冲区会导致不必要的速度下降。最新更新解决了此问题,使一系列工作负载(包括 ORDER_RANGES、RANGE_NOTCOVERED、RANGE_COVERED 和 SUM_RANGES)的平均性能提升了 2.12%

整体性能的提升

我们的测试强调了这些变化的累积影响:

  • 写入性能: 9 个测试任务负载的平均性能提高约 7.25% 。
  • 读取性能: 16 个测试任务负载的平均性能提高约 1.39% 。

比较新版本时:

  • MySQL 8.4.3 现在的读取和写入速度仅比 MySQL 8.0.40 慢 1.47% 。
  • MySQL 9.1.0 的读写速度仅比 MySQL 8.4.3 慢 0.68%。

最后

MySQL 8.4.3 和 9.1.0 中的性能改进代表着向前迈出的重要一步。这些版本展示了 MySQL 开发团队在解决社区问题方面的积极参与,包括最初由 Percona 贡献的有价值的错误报告和修复。虽然仍有进一步优化的空间以达到早期版本的峰值性能,但我们对未来的版本持乐观态度,并期待在 MySQL 社区的共同努力下不断取得进步。
在这里插入图片描述

更多技术文章,请访问:https://opensource.actionsky.com/

关于 SQLE

SQLE 是一款全方位的 SQL 质量管理平台,覆盖开发至生产环境的 SQL 审核和管理。支持主流的开源、商业、国产数据库,为开发和运维提供流程自动化能力,提升上线效率,提高数据质量。

✨ Github:https://github.com/actiontech/sqle

📚 文档:https://actiontech.github.io/sqle-docs/

💻 官网:https://opensource.actionsky.com/sqle/

👥 微信群:请添加小助手加入 ActionOpenSource

🔗 商业支持:https://www.actionsky.com/sqle

### 关于MySQL 8.4.3 的安装配置 对于特定版本如 MySQL 8.4.3 的安装,在Linux环境下通常涉及几个主要步骤,包括但不限于准备环境、下载适合操作系统的软件包以及执行具体的安装命令。考虑到不同操作系统间的差异,这里以 CentOS为例说明[^1]。 #### 准备工作 确保服务器上已清除任何旧版的 MySQL 或 MariaDB 实例,这一步骤至关重要以防版本冲突引起的问题。 ```bash sudo yum remove mysql mariadb* ``` #### 下载并安装MySQL 8.4.3 官方推荐通过官方Yum仓库来获取最新稳定版的MySQL产品。然而针对具体的小数点后两位甚至三位编号(比如这里的".4.3"),可能需要访问官方网站或者使用wget直接从官网链接下载对应的RPM文件进行离线安装。请注意验证所使用的URL指向的是安全可靠的资源位置。 ```bash # 添加MySQL Yum Repository (假设为社区版) wget https://dev.mysql.com/get/mysql80-3.noarch.rpm sudo rpm -ivh mysql80-community-release-el7-3.noarch.rpm yum install mysql-community-server ``` 上述脚本适用于一般情况下的MySQL服务端部署,并不特指某个小版本号;如果确实有特殊需求要精确到某一个小版本,则建议查阅官方文档确认是否有提供该版本的独立下载地址[^2]。 #### 配置与启动MySQL服务 完成安装之后应当立即设置root密码并且按照指引初始化数据库实例: ```sql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新设定的安全密码'; FLUSH PRIVILEGES; ``` 以上SQL语句用于更改默认的身份认证方式以便兼容更多客户端工具连接至新的MySQL实例[^3]。 #### 使用教程概览 初次使用者可以参考官方提供的《MySQL 参考手册》,其中涵盖了从基础概念介绍直到高级特性应用在内的广泛主题。在线阅读或下载PDF格式的手册都是不错的选择。此外还有许多第三方网站提供了图文并茂的操作指南帮助新手快速入门[^4]。 #### 更新日志摘要 关于MySQL各个版本之间的变更记录,最权威的消息源依然是Oracle公司维护的技术博客发行公告页面。这些地方会定期发布有关性能改进、漏洞修复以及其他重要改动的信息。对于想要了解MySQL 8系列新增功能或是解决潜在问题的朋友来说非常有价值[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值