透明数据加密 TDE 测试报告

本文介绍 OceanBase 数据库在开启和未开启 TDE 加密场景下的数据库性能的影响,帮助您评估是否选择开启 TDE 加密。

测试结论

开启 TDE 功能后,使用 128/256 并发测试 OLTP 场景,其中 update 场景性能无影响,但其他场景性能略有损耗。

  • point select 场景性能损失 3%左右,read_only 场景性能损失 1% 左右。

  • read write 场景性能损失 2%左右,write only 场景性能损失 1% 左右,insert 场景性能损失 1% 左右。

整体来看,在单点查询场景 point select、读写场景 read write 性能损失较为明显,但均在 3% 以下。

测试环境

  • 集群配置

    配置项

    相关配置

    集群版本

    OceanBase 4.2.1.8 版本

    集群规格

    2F1A,primary zone=zone1,8C16G

    集群机器

    • CPU:8C

    • 内存:61G

  • 客户端配置

    配置项

    相关配置

    操作系统

    Linux iZbp1eodxjpfw80wly2g4oZ 5.10.134-16.3.al8.x86_64 #1 SMP Tue Mar 26 18:54:05 CST 2024 x86_64 x86_64 x86_64 GNU/Linux

    sysbench 版本

    sysbench 1.0.20

    cpu 规格

    8C

    内存

    30G

测试工具

sysbench 是一个跨平台且支持多线程的模块化基准开源测试工具,用于评估系统在运行高负载数据库时的性能。

测试指标

  • 每秒执行事务数 TPS(Transactions Per Second):数据库每秒执行的事务数,以 COMMIT 成功次数为准。

  • 事务处理平均延迟(Average Latency):数据库执行一条事务的平均耗时,单位为毫秒(ms)。

测试步骤

本次测试以 128 张表,每张表数据量为 100 万条,执行时间为 60 秒为例。

安装 sysbench 工具

sysbench 工具使用yum install一键安装或者通过手动方式安装。

  • 使用yum install一键安装。

    在客户端机器上,执行如下命令,安装 sysbench 工具。

    sudo yum install sysbench
  • 手动安装

    1. 下载 sysbench。

      sysbench 工具下载,请参考 sysbench 下载

    2. 解压 sysbench。

      unzip ./1.0.20.zip
    3. 编译 sysbench。

      进入 sysbench 解压后的目录,运行以下命令编译 sysbench:

      [w****@localhost ~]# cd sysbench-1.0.20
      [w****@localhost sysbench-1.0.20]# ./autogen.sh
      [w****@localhost sysbench-1.0.20]# ./configure --prefix=/usr/sysbench/ --with-mysql-includes=/usr/include/mysql/ --with-mysql-libs=/usr/lib64/mysql/ --with-mysql
      [w****@localhost sysbench-1.0.20]# make
      [w****@localhost sysbench-1.0.20]# make install

      参数说明:

      参数名

      说明

      --prefix

      指定 sysbench 的安装目录。

      --with-mysql-includes

      指定 mysql 的 includes 目录。

      --with-mysql-libs

      指定 mysql 的 lib 目录。

      --with-mysql

      sysbench 默认支持 MySQL。

    4. 运行以下命令,验证 sysbench 是否安装成功:

      [w****@localhost sysbench-1.0.20] $./src/sysbench --help 

      如果返回以下信息,则 sysbench 安装成功。

      Usage:
          sysbench [options]... [testname] [command]
      Commands implemented by most tests: prepare run cleanup help

执行测试

说明
  • 测试其他线程及脚本的流程与下述测试流程一致。

  • 下述测试流程以 MySQL 租户,线程数为 128 ,创建表为 128 张,每张表数据为 100 万,执行时间为 60 秒,测试脚本为 read write 为例。

  1. MySQL 模式的数据库环境创建,详细步骤可参见 购买实例 > 新建租户 > 新建账号 > 创建数据库(仅 MySQL)

  2. 登录测试租户。登录数据库的连接串信息,请参见 获取连接参数

    obclient -h$host -P$port -u$user_name -p****** 
  3. 清除垃圾数据,空出部分数据盘空间。

    obclient> PURGE RECYCLEBIN; 
  4. 设置超时时间。

    obclient > set global ob_query_timeout=36000000000;
  5. 设置透明加密方式,关于设置透明加密方式详细信息,可参考 TDE 透明加密

  6. 退出数据库,使用 sysbench 工具加载测试数据。

    [w****@localhost src]# ./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=128 --time=60 oltp_read_write prepare
  7. 执行自定义测试脚本。

    [w****@localhost src]# ./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=128 --time=60 oltp_read_write run
  8. 清理数据。

    [w****@localhost src]# ./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=128 --time=60  oltp_read_write cleanup

测试结果

测试脚本/线程数

是否开启 TDE

128(tps/rt avg)

256(tps/rt avg)

rate

point select

TDE 关

161720.04/0.79

172429.16/1.48

\

point select

TDE 开

161113.90/0.79

167284.47/1.53

-2.98%

read only

TDE 关

6571.77/19.47

6877.75/37.19

\

read only

TDE 开

6558.48/15.51

6813.74/37.54

-0.93%

read write

TDE 关

3483.70/36.10

3575.20/71.50

\

read write

TDE 开

3391.10/37.72

3572.78/71.55

-2.61%

insert

TDE 关

37806.09/3.38

54585.23/4.69

\

insert

TDE 开

37121.78/3.45

54353.98/4.71

-0.42%

update

TDE 关

29743.67/4.30

38743.35/6.61

\

update

TDE 开

29866.70/4.28

38905.09/6.58

无影响

update non index

TDE 关

38892.58/3.29

55662.11/4.60

\

update non index

TDE 开

39250.25/3.26

56661.89/4.52

无影响

write_only

TDE 关

11583.12/11.05

12395.72/20.64

\

write_only

TDE 开

11450.32/11.17

12259.25/20.87

-1.10%

说明

上述表格中,rate 中的-表示性能下降。例如:point select 在 TDE 开启后,性能会下降 2.98% 。