MySQL 8.0 InnoDB压缩行格式性能测试(1)

简介: MySQL 8.0 InnoDB压缩行格式性能测试

1. 背景信息

1. 测试环境

2. 进行测试

2.1 所有数据可以加载到buffer pool中

2.1.1 数据压缩率

2.1.2 TPS相差值

2.1.3 平均延迟差值 avg Latency (ms)

2.1.4 99%延迟差值 99th percentile Latency (ms)

2.2 数据量超过内存ibp容量

2.2.1 数据压缩率

2.2.2 TPS相差值

2.2.3 平均延迟差值 avg Latency (ms)

2.2.4 99%延迟差值 99th percentile Latency (ms)

3. 总结延伸阅读

1. 背景信息

多年前我对InnoDB表压缩格式做了个简单的测试,得到的结论大概是:

按照这个结论,压缩行格式不建议用在TPS较高的OLTP场景,如果有类似的业务需要,可以考虑用TokuDB或RocksDB引擎。

尝试过用TokuDB当做Zabbix的后端数据库,效果还不错,详情见 迁移Zabbix数据库到TokuDB

不过,TokuDB现在已经基本被Percona抛弃了,还有这类业务需求时,可以考虑改用RocksDB引擎,可以参考这篇文章 MyRocks引擎:入坑须知

随着MySQL 8.0.20的发布,我又重燃了对compressed行格式的兴趣,今日就此再做了个简单测试。

1. 测试环境

本次测试的服务器配置是腾讯云"标准型S5"型CVM主机,具体配置是:

配置项 参数
CPU 4 Core(Intel(R) Xeon(R) Platinum 8255C CPU @ 2.50GHz)
内存 16GB
数据盘 500GB SSD云硬盘(理论最大随机IOPS值 16800,实际上最高也只能跑到10000不到)



my.cnf中InnoDB相关配置参数(其余采用默认设置)

innodb_flush_log_at_trx_commit=1
innodb_buffer_pool_size=8G
innodb_log_file_size = 2G



MySQL选用最新的8.0.20版本:

Server version:        8.0.20 MySQL Community Server - GPL

2. 进行测试

本次测试计划分为两种模式

a) 所有数据可以加载到buffer pool中

b) 数据量超过内存ibp容量

针对上述两种模式再分别对dynamic、compressed行格式的区别。

2.1 所有数据可以加载到buffer pool中

相应的sysbench参数如下:

TBLCNT=50 #共50个表

DURING=900 #一次压测900秒(5分钟)
ROWS=100000 #每个表10万行数据
MAXREQ=5000000 #每个线程执行500万次请求

2.1.1 数据压缩率

未压缩格式(KB) 压缩格式(KB) 压缩率(1-压缩格式/未压缩格式)
1638456 1218588 25.63%

2.1.2 TPS相差值


image.png


数值说明:这表示 未压缩格式 相对于 压缩格式的提升比例,例如上图中第一列的 71.11%,表示 在OLTP模式下,并发256线程压测时,未压缩行格式的TPS相对于压缩行格式增加71.11%,下同。

2.1.3 平均延迟差值 avg Latency (ms)


image.png


2.1.4 99%延迟差值 99th percentile Latency (ms)


image.png


根据测试结果的几点结论:

a) 当数据都能放在buffer pool中的时候,是否采用压缩格式对于读的业务场景影响很小。

b) 当数据都能放在buffer pool中的时候,混合OLTP业务场景或者以更新为主的业务场景中,Dynamic行格式明显要比Compressed行格式的性能更好。

综上,当数据量比较小的时候,并且读多写少的业务场景中,可以考虑使用Compressed行格式。而如果是写多读少的业务场景,则最好使用Dynamic行格式。


            </div>
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
安全 Java 数据库
Spring Boot中集成 Shiro
本节主要介绍了 Shiro 安全框架与 Spring Boot 的整合。先介绍了 Shiro 的三大核心组件已经它们的作用;然后介绍了 Shiro 的身份认证、角色认证和权限认证;最后结合代码,详细介绍了 Spring Boot 中是如何整合 Shiro 的,并设计了一套测试流程,逐步分析 Shiro 的工作流程和原理,让读者更直观地体会出 Shiro 的整套工作流程。Shiro 使用的很广泛,希望读者将其掌握,并能运用到实际项目中。
|
Java
详解Java:抽象类和接口
详解Java:抽象类和接口
175 0
|
缓存 运维 Kubernetes
15 分钟实现企业级应用无损上下线
很多用户量大并发度高的应用系统为了避免发布过程中的流量有损,一般选择在流量较小的半夜发布,虽然这样做有效果,但不可控导致背后的研发运维成本对企业来说是一笔不小的负担。基于此,阿里云微服务引擎 MSE 在应用发布过程中,通过应用下线时进行自适应等待+主动通知,应用上线时就绪检查与微服务生命周期对齐+服务预热等技术手段所提供的微服务应用无损上下线功能,能有效帮助企业规避线上发布所出现的流量资损。
15 分钟实现企业级应用无损上下线
|
4天前
|
数据采集 人工智能 安全
|
13天前
|
云安全 监控 安全
|
5天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1103 152
|
18天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1781 9
|
10天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
709 152