开源MySQL在倚天ECS上的最佳优化实践

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云服务器ECS,u1 2核4GB 1个月
简介: 我们总结了在倚天上自建MySQL的基本优化手段,并在阿里云ECS G8y实例(基于Armv9的倚天710处理器)和G8i实例(x86)上做了开源8.0.34版本的MySQL的性能测试对比,优化后MySQL在G8y上的性能相对于未优化在G8i上的性能在只读场景有63%的性能优势,在读写混合场景有35%的性能优势;相对于优化后的G8i仍能保持只读场景20%的性能优势,读写混合场景5%的性能优势。

MySQL是一个开源的关系型数据库管理系统(Relational Database Management System,RDBMS),是业界最流行的RDBMS之一,广泛用于Web应用程序的后端数据存储。它是一种轻量级、快速、可靠的数据库解决方案,被广泛应用于各个行业领域,包括电子商务、金融服务、制造业和社交媒体等。

MySQL具有很高的可扩展性和稳定性,能够应对大规模数据存储和处理需求。它支持复杂的查询语言,事务处理和数据安全功能,为开发人员提供了一个强大的工具来管理和操作大规模数据。

与Redis等内存型数据库不同,MySQL的数据通常存储在磁盘上,这意味着它可以处理大量数据并且不会受到内存容量的限制。在生产环境中,MySQL通常部署在高性能的服务器上,以确保系统的稳定性和性能。它能够处理大量的并发请求,并提供高吞吐量的数据处理能力。

mysql架构.png

基于倚天710的数据中心服务器具备很强的单核计算能力,我们也通过微架构、编译、内核、操作系统、应用层等的全面优化大大提升了MySQL在倚天上的性能。

在本文中,我们总结了在倚天上自建MySQL的基本优化手段,并在阿里云ECS G8y实例(基于Armv9的倚天710处理器)和G8i实例(x86)上做了开源8.0.34版本的MySQL的性能测试对比,优化后MySQL在G8y上的性能相对于未优化在G8i上的性能在只读场景有63%的性能优势,在读写混合场景有35%的性能优势;相对于优化后的G8i仍能保持只读场景20%的性能优势,读写混合场景5%的性能优势。

mysql优化.png

优化手段

平头哥解决方案应用优化团队对MySQL应用进行了自顶向下的全面优化,具体包括应用层参数优化、系统层及OS层配置优化、编译器层优化、微架构分析优化、硬件能力优化等。

  • 应用层:
  • 对MySQL应用侧关键参数进行分析,针对倚天机器进行适配优化。结合当前机器内存、cache等配置合适的buffer size、innodb pool size、logfile等方式激发硬件性能潜力。
  • 系统及OS层:
  • 通过分析MySQL运行时系统特征,针对应用侧无关的系统参数如调度参数等进行优化,提升CPU利用率,最大程度发挥倚天性能优势。
  • 通过开启代码段大页,将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,显著降低iTLB miss,降低了整个系统中的资源竞争。
  • 编译器层:
  • 启用LSE指令扩展,使用原生的CAS 等指令实现数据库的原子操作,优化了加锁、解锁等操作的性能,极大提高了数据库高并发场景下的性能。
  • 使用链接时优化(LTO)技术,扩展了编译器过程间分析的范围,全局优化数据库代码。
  • 对OS内核及MySQL服务端应用进行PGO优化。通过更优的代码冷热重新布局,降低在典型场景运行时应用的Frontend Bound。
  • 微架构分析优化:
  • 基于解决方案团队自主研发的Micro-Optimizer微架构分析优化工具,通过抓取运行时指令流,进行分支跳转分析,建立基于Basic Block的分析模型,可以获取更精确的代码冷热情况,可以在PGO的基础上进一步降低i-cache miss率。
  • 基于Micro-Optimizer,通过对指令流中的ldr str等访存指令进行分析建模,通过配置硬件参数进行仿真或直接采样抓取SPE数据的方式可以获取应用在运行时的d-cache miss情况。抓取热点并通过合适的指令预取或缓存锁定优化手段可针对特定PC进行缓存优化,从而降低应用整体d-cache miss率,进而在微架构层面降低backend bound。

micro-optimizer架构.png

  • 硬件能力优化:
  • 通过合适的硬件预取策略配置,可以进一步发挥倚天710的硬件能力。数据库的内存访问与常见workload不同,访问模式更加随机,不适合通用的数据预取策略。在数据库场景下,过于激进的数据预取可能无法提高缓存命中率,反而会增加内存带宽的使用,并且在缓存中填充无效的数据。调整预取策略,为缓存设置合理的指令预留,能给MySQL带来显著的性能收益。

综合以上各种不同层面的优化,可以在自建的开源版本MySQL同样达到很高的性能水平。其中有部分优化手段也适用于x86,我们在x86上也进行了同样的优化,也获取了一定的性能收益,但是综合来看在倚天上优化效果更佳,性能也最终得以反超x86。

测试环境及结果

我们使用sysbench作为负载生成器和性能基准测试工具。在数据库领域中,Sysbench经常被用来测试各种数据库管理系统(如MySQL、PostgreSQL等)在不同负载下的性能表现。它可以模拟并发用户访问数据库,测量数据库的读写能力、事务处理性能和并发连接处理能力等指标。

配置说明

benchmark客户端使用了一个单独的ECS.G7.8xlarge实例。

两种服务端ECS实例类型配置如下:

Processor

ECS Type

Yitian 710

G8y.2xlarge

x86 cpu

G8i.2xlarge

MySQL软件版本:

Component Name

Version

MySQL

8.0.34

GCC version

10.2.1 20200825 (Alibaba 10.2.1-3.5 2.32)

Sysbench

1.0.20

Operating System

5.10.134-0.git.e660833cf.al8.aarch64

Sysbench测试参数:

Test Config Parameter

Value

Number of Thread

64

Number of Tables

32

Table Size

25000

Test Time

1200

Event

oltp_read_only/oltp_read_write/oltp_write_only

我们将MySQL优化手段集成在ptg-accelerator中,可以在自建MySQL基础上一键调优。

注意部分优化手段也可应用在G8i上,但是整体收益依然不如G8y

TPS性能数据


G8i.2xlarge

G8y.2xlarge

Perf benifit gain

Read Only

Read Write

Read Only

Read Write

Read Only

Read Write

基础性能

7253.02

5204.89

6638.50

3934.25

-8.47%

-24.40%

调优后性能

9904.48

6686.58

11822.05

6990.4

19.36%

4.54%

read_only优化.pngread_write优化.png

微架构性能数据

这里对比了在倚天环境优化前后的前后端微架构指标变化数据。

指标说明:

  • Frontend Stall-Rate = Frontend Stalls / (Frontend Stalls + Backend Stalls)
  • Backend Stall-Rate = Backend Stalls / (Frontend Stalls + Backend Stalls)
  • 基准场景的Instruction TLB Miss、Instruction L1 Miss、Branch Miss、Data TLB Miss、Data L1 Cache Miss、Data L2 Cache Miss都设置为100%,方便优化状态下作对比。
  • 优化场景的以上数据为[优化/基准]的结果,以更方便地体现优化的比例

可以看到经过我们整体的优化,MySQL在g8y上的微架构性能表现有明显的提升

  • 前端Bound的比例有一定的降低,在Instruction TLB Miss率上相对优化前有43.9%的提升,Instruction L1 Miss率相对优化前有25.8%的提升,Branch Miss率相对优化前有 56.3%的提升。
  • 后端数据也体现出一定的性能提升,Data TLB Miss率相对优化前有47.3%的提升,Data L2 Cache Miss率有18.5%的提升。

frontend.pngbackend.png

总结

通过优化MySQL在倚天上的性能达到并反超x86的性能水平,叠加倚天在价格上的优势可获取更高的性价比优势。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
存储 弹性计算 算法
倚天产品介绍|倚天ECS加速国密算法性能
倚天ECS是阿里云基于平头哥自研数据中心芯片倚天710推出arm架构实例,采用armv9架构,支持SM3/SM4指令,可以加速国密算法性能。本文基于OpenSSL 3.2和Tongsuo 实测对比了倚天ECS g8y实例和Intel g7 实例国密性能。为用户选择ECS提供参考。
|
1月前
|
网络协议 Shell 网络安全
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
164 0
|
1月前
|
编解码 弹性计算 Cloud Native
倚天使用|倚天ECS视频编解码之x264性能
在平头哥发布了首颗为云而生的 CPU 芯片倚天710之后,搭载倚天 710 的 ECS 实例表现出强劲的性能实力,在x264编解码场景下有着极高的性价比。
|
14天前
|
Linux 数据安全/隐私保护
Linux基础与服务器架构综合小实践
【4月更文挑战第9天】Linux基础与服务器架构综合小实践
1244 8
|
21天前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
1月前
|
Java 关系型数据库 MySQL
Flink1.18.1和CDC2.4.1 本地没问题 提交任务到服务器 报错java.lang.NoClassDefFoundError: Could not initialize class io.debezium.connector.mysql.MySqlConnectorConfig
【2月更文挑战第33天】Flink1.18.1和CDC2.4.1 本地没问题 提交任务到服务器 报错java.lang.NoClassDefFoundError: Could not initialize class io.debezium.connector.mysql.MySqlConnectorConfig
52 2
|
1月前
|
存储 弹性计算 监控
ecs配置与优化
阿里云ECS优化涉及实例规格选择、磁盘存储、网络配置、OS及软件优化、连接数管理、监控自动化和升级扩展。选择合适实例类型、磁盘类型以满足I/O需求,优化网络带宽与安全组规则,保持操作系统更新并调整软件配置。注意监控关键指标,利用弹性伸缩适应业务变化,适时升级资源,实现性能与成本的最佳平衡。
24 3
|
1月前
|
弹性计算 算法 应用服务中间件
倚天使用|Nginx性能高27%,性价比1.5倍,基于阿里云倚天ECS的Web server实践
倚天710构建的ECS产品,基于云原生独立物理核、大cache,结合CIPU新架构,倚天ECS在Nginx场景下,具备强大的性能优势。相对典型x86,Http长连接场景性能收益27%,开启gzip压缩时性能收益达到74%。 同时阿里云G8y实例售价比G7实例低23%,是Web Server最佳选择。
|
1月前
|
弹性计算 NoSQL 测试技术
倚天使用|Redis性能高30%,阿里云倚天ECS性能摸底和迁移实践
Redis在倚天ECS环境下与同规格的基于 x86 的 ECS 实例相比,Redis 部署在基于 Yitian 710 的 ECS 上可获得高达 30% 的吞吐量优势。成本方面基于倚天710的G8y实例售价比G7实例低23%,总性价比提高50%;按照相同算法,相对G8a,性价比为1.4倍左右。
137510 5
|
4天前
|
SQL 存储 关系型数据库
MySQL Cluster集群安装及使用
MySQL Cluster集群安装及使用

相关产品

  • 云服务器 ECS
  • 云数据库 RDS MySQL 版