zlib库优化性能测试(port from facebook and intel)

本文涉及的产品
性能测试 PTS,5000VUM额度
简介:

背景

facebook基于zlib 1.2.5 做了些改进,并port了intel的一些相关补丁。本文主要目的是验证其压缩效果

主要有两个补丁:

https://github.com/facebook/mysql-5.6/commit/8ac9e7d219c8679b75da26e64d702b5517d05ea8 (Optimize zlib for a non-sliding window.)

https://github.com/facebook/mysql-5.6/commit/ed46ec9b4ef367f3335a531999f39cb1d9d40341 (port from intel)

intel补丁的主要修改:

1) By default, use CRC32 as the hash, computed using SSE4.2

2) Also provide a better fallback hash in case of no SSE

3) By default use double-byte comparisons by enabling UNALIGNED_OK

4) Use best_len_minus_1 instead of best_len in longest_match()

5) Minor optimization in deflate_slow()

修改MySQL

为cmake选修-DWITH_ZLIB增加新值

-DWITH_ZLIB= SYSTEM | BUNDLED | ENHANCED

增加目录zlib_enhanced,基于zlib-1.2.5版本,并打上补丁

对innodb块压缩的影响

测试环境:

某个典型的空间类型库, 300w行记录

使用如下语句测试导入速度:

load data infile ‘t1.data’ into table t1 character set gbk;

每组测试三次,取最优值

key_block_size = 8

zlib 1 min 37.81 sec
Zlib_enhanced 1 min 38.68 sec

除去误差因素,load数据的时间基本持平,原因是数据能够很容易压缩到8k,几乎无压缩失败

key_block_size = 4

zlib 6 min 0.88 sec
Zlib_enhanced 7 min 1.59 sec)

Load数据的性能提升约14.4%

对列压缩场景的性能影响

使用某个大字段数据集场景,大字段定义为压缩类型

load data infile ‘t1.data’ into table t1;

每组测三次,取最优值

zlib 4 min 2.18 sec
zlib_enhanced 3 min 50.50 sec

在该场景下,load数据性能提升较少,约4.8% ,压缩比无损失

结论

从测试的结果来看,zlib补丁的效果是有一定的提升的,测试过程中也验证了和老版本zlib的兼容性


相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
5月前
|
数据可视化 测试技术 持续交付
自动化测试神器:Python之Pytest库入门使用
自动化测试神器:Python之Pytest库入门使用
155 4
|
5月前
|
C++
jrtplib开源库系列之一:jrtplib介绍、安装和测试(window 10环境介绍)
关于jrtplib库网上已经有很多介绍,而且目前jrtplib作者已经停止更新(Apr 18, 2020),最新版本为v3.11.2。本系列内容也以该版本进行介绍。 相信你已经对RTP/RTCP协议有一定的了解,并想更深入的了解RTP协议的具体实现,jrtplib就是使用使用C++实现的RTP/RTCP协议。具体标准为RFC3550,如果想仔细阅读原文,但是对英文又有点吃力,可以参考我的博客RTP/RTCP中英文对照,在博客的后面有百度链接,是对RFC3550的中文翻译,可能很多地方不太准确,有些内容是自己添加进去的,希望不会影响你的阅读。
98 0
|
21天前
|
关系型数据库 MySQL 测试技术
《性能测试》读书笔记_数据库优化
《性能测试》读书笔记_数据库优化
24 7
|
2月前
|
关系型数据库 MySQL Python
[python]使用faker库生成测试数据
[python]使用faker库生成测试数据
|
2月前
|
测试技术 开发工具 Python
在Jetson Nano上编译 pyrealsense2库包,并在Intel的tof相机上进行测试
在Jetson Nano上编译 pyrealsense2库包,并在Intel的tof相机上进行测试
28 0
|
3月前
|
Java 测试技术 开发者
Python:使用标准库编写单元测试
在现代软件开发中,编写单元测试是确保代码质量和可靠性的重要步骤。Python 提供了一个内置的单元测试框架,称为 unittest,它可以帮助开发者方便地编写和运行测试。本文将详细介绍如何使用 unittest 编写单元测试。
|
4月前
|
SQL DataWorks 安全
DataWorks产品使用合集之在进行测试数据集成时,目标库的数据是源库数据的3倍量,是什么导致的
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
DataWorks产品使用合集之在进行测试数据集成时,目标库的数据是源库数据的3倍量,是什么导致的
|
3月前
|
数据库
获取本地某文件中的以.jpg文件的名字,并导入数据库的测试代码
获取本地某文件中的以.jpg文件的名字,并导入数据库的测试代码
|
5月前
|
数据采集 机器学习/深度学习 Java
数据猎手:使用Java和Apache HttpComponents库下载Facebook图像
本文介绍了如何使用Java和Apache HttpComponents库从Facebook获取图像数据。通过设置爬虫代理IP以避免限制,利用HttpClient发送请求,解析HTML找到图像链接,然后下载并保存图片。提供的Java代码示例展示了实现过程,包括创建代理配置、线程池,以及下载图片的逻辑。注意,实际应用需根据Facebook页面结构进行调整。
数据猎手:使用Java和Apache HttpComponents库下载Facebook图像
|
5月前
|
安全 IDE Java
Java串口通信技术探究2:RXTX库单例测试及应用
Java串口通信技术探究2:RXTX库单例测试及应用
90 4
下一篇
无影云桌面