本文介绍不同规格的RDS MySQL实例在开启和未开启TDE加密场景下的性能影响,帮助您评估是否选择TDE加密。
测试环境
配置项 |
ECS实例 |
RDS MySQL实例(未开启TDE) |
RDS MySQL实例(开启TDE) |
RDS MySQL实例(未开启TDE) |
RDS MySQL实例(开启TDE) |
说明 |
地域及可用区 |
华北2(北京)可用区H |
华北2(北京)可用区H |
华北2(北京)可用区H |
华北2(北京)可用区H |
华北2(北京)可用区H |
本测试在同一地域及可用区。 |
网络类型 |
专有网络VPC |
专有网络VPC |
专有网络VPC |
专有网络VPC |
专有网络VPC |
本测试在同一VPC。 |
CPU和内存 |
16核 32 GB |
4核 8 GB |
4核 8 GB |
8核 32 GB |
8核 32 GB |
不涉及 |
实例规格族 |
ecs.c5 |
通用型 |
通用型 |
通用型 |
通用型 |
不涉及 |
实例规格 |
ecs.c5.4xlarge |
rds.mysql.s3.large |
rds.mysql.s3.large |
rds.mysql.c1.xlarge |
rds.mysql.c1.xlarge |
不涉及 |
存储类型 |
ESSD云盘 |
本地SSD盘 |
本地SSD盘 |
本地SSD盘 |
本地SSD盘 |
不涉及 |
实例或镜像版本 |
Alibaba Cloud Linux 3.2104 64位 |
|
MySQL 8.0
|
MySQL 8.0
|
MySQL 8.0
|
不涉及 |
说明
测试客户端部署在ECS实例上。
测试工具
sysbench是一个跨平台且支持多线程的模块化基准开源测试工具,用于评估系统在运行高负载数据库时的性能。sysbench的更多信息及使用方法,请参见sysbench文档。
测试指标
-
每秒执行事务数TPS(Transactions Per Second):数据库每秒执行的事务数,以COMMIT成功次数为准。
-
事务处理平均延迟(Average Latency):数据库执行一条事务的平均耗时,单位为毫秒(ms)。
测试表结构
sysbench的默认表结构如下:
CREATE TABLE `sbtest8` (
`id` int NOT NULL AUTO_INCREMENT,
`k` int NOT NULL DEFAULT '0',
`c` char(120) NOT NULL DEFAULT '',
`pad` char(60) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `k_8` (`k`)
) ENGINE=InnoDB AUTO_INCREMENT=100001 DEFAULT CHARSET=utf8mb3
测试步骤
本测试对表中的列进行加密,分析全加密MySQL实例在不同场景下的性能。
-
创建MySQL实例。详情请参见创建RDS MySQL实例。
-
开通外网地址。详情请参见申请或释放外网地址。
-
创建数据库和账号。详情请参见创建数据库和账号。
-
在ECS实例中执行如下命令(本文以Linux系统为例),安装MySQL客户端。
-
CentOS:执行
sudo yum install mysql
。 -
Ubuntu:执行
sudo apt-get update
,并执行sudo apt install mysql-server
。
-
-
打开MySQL命令行工具,执行如下命令,连接RDS MySQL数据库。
mysql -h -u -P -p
说明
数据库连接地址和端口号获取方法,请参见查看或修改内外网地址和端口。
-
退出数据库,使用sysbench工具加载测试数据。
说明
-
本测试中,使用sysbench加载128个表,其中每个表包含十万行记录,以下脚本示例中采用oltp_read_write模型。
-
示例代码中线程数以16为例,执行中请替换为实际线程数(1、8、16、32、64、128、256、512)。
sysbench --db-driver=mysql --mysql-host=[database server host] --mysql-port=[database server port] --mysql-user=[database user name] --mysql-password=[database user password] --mysql-db=testdb --table_size=1000000 --tables=128 --threads=16 --time=60 oltp_read_write prepare
-
-
执行自定义测试脚本。
sysbench --db-driver=mysql --mysql-host=[database server host] --mysql-port=[database server port] --mysql-user=[database user name] --mysql-password=[database user password] --mysql-db=testdb --table_size=1000000 --tables=128 --threads=16 --time=60 oltp_read_write run
-
清理数据。
sysbench --db-driver=mysql --mysql-host=[database server host] --mysql-port=[database server port] --mysql-user=[database user name] --mysql-password=[database user password] --mysql-db=testdb --table_size=1000000 --tables=128 --threads=16 --time=60 oltp_read_write cleanup
测试场景一:4核 8 GB RDS MySQL实例开启TDE前后对比
测试数据
各模型下的实例性能趋势图
性能数据汇总
说明
4C8G_TDE_OFF[1]:表示未开启TDE的4核 8 GB RDS MySQL实例。
4C8G_TDE_ON[9]:表示开启TDE的4核 8 GB RDS MySQL实例。
测试结论
开启TDE加密功能后,RDS MySQL实例性能都有所损失。从整体上看,在oltp_read_only模型下损失较为严重。
测试场景二:8核 32 GB RDS MySQL实例开启TDE前后对比
测试数据
各模型下的实例性能趋势图
性能数据汇总
说明
8C32G_TDE_OFF[1]:表示未开启TDE的8核 32 GB RDS MySQL实例。
8C32G_TDE_ON[5]:表示开启TDE的8核 32 GB RDS MySQL实例。
测试结论
开启TDE加密功能后,RDS MySQL实例性能都有所损失。从整体上看,与4核 8 GB RDS MySQL实例类似,在oltp_read_only模型下损失较为严重。
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/154884.html