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;
相关文章
|
SQL 关系型数据库 MySQL
18 PDO你知道是什么吗?
路老师在知乎分享了PHP语言的知识,重点介绍了PDO(PHP Data Object)数据库抽象层。PDO旨在解决PHP早期版本的维护难题,提高代码的可移植性和兼容性。文章详细讲解了PDO的基本概念、特点、连接数据库的方法以及执行SQL语句的几种方式,包括`exec()`、`query()`、`prepare()`和`execute()`方法。适合PHP初学者深入了解和实践。
996 3
|
JSON 小程序 前端开发
微信小程序进阶——Flex弹性布局&轮播图&会议OA项目(首页)
微信小程序进阶——Flex弹性布局&轮播图&会议OA项目(首页)
469 0
|
算法 Java 开发者
《黑神话:悟空》Xbox版的技术挑战与解决方案
【8月更文第26天】《黑神话:悟空》是一款备受期待的动作角色扮演游戏,以其精美的画面和丰富的中国神话故事背景而闻名。本篇文章将重点介绍游戏在Xbox平台上的技术挑战及其解决方案,特别是针对内存管理的问题。通过深入分析,我们将了解开发团队是如何克服这些挑战,确保游戏在Xbox上能够流畅运行的。
490 4
|
缓存 负载均衡 测试技术
掌握wrk压力测试工具的优化技巧与实践
掌握wrk压力测试工具的优化技巧与实践
346 1
|
编解码 IDE Ubuntu
Android Development Studio 初学者教程
今天介绍的是面向初学者的 Android development studio 教程。它是用于 Android 开发的最佳 IDE 之一。在这篇文章中,我将引导你完成安装和设置 Android Studio 的步骤。
215 0
Android Development Studio 初学者教程
|
存储 数据管理 数据处理
阿里云oss流量费用是怎么算的?
阿里云oss流量费用是怎么算的?OSS回源下行流量包价格,OSS流量包100G 49元/月
3546 0
|
Linux 编译器 C语言
Linux-GCC介绍+入门级Makefile使用
Linux-GCC介绍+入门级Makefile使用
285 0
|
测试技术 API
【.NET6】gRPC服务端和客户端开发案例,以及minimal API服务、gRPC服务和传统webapi服务的访问效率大对决
前言:随着.Net6的发布,Minimal API成了当下受人追捧的角儿。而这之前,程序之间通信效率的王者也许可以算得上是gRPC了。那么以下咱们先通过开发一个gRPC服务的教程,然后顺势而为,再接着比拼一下minimal api服务和gRPC服务在通信上的效率。
724 0
【.NET6】gRPC服务端和客户端开发案例,以及minimal API服务、gRPC服务和传统webapi服务的访问效率大对决
|
云安全 人工智能 运维
云栖·追踪云原生|Serverless入围阿里云十大核心技术
阿里云函数计算团队自去年进入 Forrester 领导者象限后,继续攻克业内的这些技术难题,并将在此次云栖大会重磅发布7大技术创新和突破。
云栖·追踪云原生|Serverless入围阿里云十大核心技术
|
存储 设计模式 SQL
MYSQL 数据库设计模式
MYSQL 数据库设计模式
297 0