TiDB v8.5.0 在 TiDB Cloud 上的 Sysbench 性能测试报告
本文提供了 TiDB v8.5.0 版本在 TiDB Cloud Dedicated 集群上的 Sysbench 性能测试步骤和结果。本报告也可以作为 TiDB Self-Managed v8.5.0 集群性能的参考。
测试概述
本测试旨在展示 TiDB v8.5.0 在在线事务处理(OLTP)场景下的 Sysbench 性能。
测试环境
TiDB 集群
测试在具有以下设置的 TiDB 集群上进行:
集群类型:TiDB Cloud Dedicated
集群版本:v8.5.0
云服务提供商:AWS (us-west-2)
集群配置:
节点类型 节点规格 节点数量 节点存储 TiDB 16 vCPU, 32 GiB 2 N/A TiKV 16 vCPU, 64 GiB 3 1000 GiB
参数配置
系统变量 tidb_session_plan_cache_size 控制可以缓存的计划的最大数量。默认值为 100。对于每个工作负载,本文将 tidb_session_plan_cache_size 设置为 1000 进行测试:
SET GLOBAL tidb_session_plan_cache_size = 1000;
TiKV 参数 prefill-for-recycle 可以使日志回收在初始化后立即生效。本文基于不同的工作负载使用以下 prefill-for-recycle 配置进行测试:
对于
oltp_point_select工作负载,使用prefill-for-recycle参数的默认值:raft-engine.prefill-for-recycle = false对于
oltp_insert、oltp_read_write、oltp_update_index和oltp_update_non_index工作负载,启用prefill-for-recycle参数:raft-engine.prefill-for-recycle = true
基准测试执行器
基准测试执行器向 TiDB 集群发送 SQL 查询。在本测试中,其硬件配置如下:
- 机器类型:Amazon EC2 (us-west-2)
- 实例类型:c6a.2xlarge
- Sysbench 版本:sysbench 1.0.20 (使用捆绑的 LuaJIT 2.1.0-beta2)
测试步骤
本节介绍如何逐步执行 Sysbench 性能测试。
在 TiDB Cloud 控制台中,创建一个满足测试环境要求的 TiDB Cloud Dedicated 集群。
更多信息,请参见创建 TiDB Cloud Dedicated 集群。
在基准测试执行器上,连接到新创建的集群并创建名为
sbtest的数据库。要连接到集群,请参见通过专用连接点连接到 TiDB Cloud Dedicated。
要创建
sbtest数据库,执行以下 SQL 语句:CREATE DATABASE sbtest;将 Sysbench 数据加载到
sbtest数据库。运行以下
sysbench prepare命令,向sbtest数据库导入 32 个表和 10,000,000 行数据。将${HOST}、${PORT}、${THREAD}和${PASSWORD}替换为你的实际值。sysbench oltp_common \ --threads=${THREAD} \ --db-driver=mysql \ --mysql-db=sbtest \ --mysql-host=${HOST} \ --mysql-port=${PORT} \ --mysql-user=root \ --mysql-password=${PASSWORD} \ prepare --tables=32 --table-size=10000000
运行以下
sysbench run命令对不同工作负载进行 Sysbench 性能测试。本文对五个工作负载进行测试:oltp_point_select、oltp_read_write、oltp_update_non_index、oltp_update_index和oltp_insert。对于每个工作负载,本文使用不同的${THREAD}值进行三次测试。对于oltp_point_select和oltp_read_write,值为50、100和200。对于其他工作负载,值为100、200和400。每个并发测试持续 20 分钟。sysbench ${WORKLOAD} run \ --mysql-host=${HOST} \ --mysql-port=${PORT} \ --mysql-user=root \ --db-driver=mysql \ --mysql-db=sbtest \ --threads=${THREAD} \ --time=1200 \ --report-interval=10 \ --tables=32 \ --table-size=10000000 \ --mysql-ignore-errors=1062,2013,8028,9007 \ --auto-inc=false \ --mysql-password=${PASSWORD}
测试结果
本节介绍 v8.5.0 在测试环境中的 Sysbench 性能。
点查性能
oltp_point_select 工作负载的性能如下:
| 线程数 | TPS | 95% 延迟 (ms) |
|---|---|---|
| 50 | 32,733 | 1.94 |
| 100 | 62,123 | 2.04 |
| 200 | 107,795 | 2.56 |

读写性能
oltp_read_write 工作负载的性能如下:
| 线程数 | TPS | 95% 延迟 (ms) |
|---|---|---|
| 50 | 1,258 | 45.8 |
| 100 | 2,243 | 52 |
| 200 | 3,187 | 94.7 |

更新非索引性能
oltp_update_non_index 工作负载的性能如下:
| 线程数 | TPS | 95% 延迟 (ms) |
|---|---|---|
| 100 | 12,969 | 10.10 |
| 200 | 23,265 | 11.2 |
| 400 | 39,547 | 13.2 |

更新索引性能
oltp_update_index 工作负载的性能如下:
| 线程数 | TPS | 95% 延迟 (ms) |
|---|---|---|
| 100 | 11,678 | 11.0 |
| 200 | 17,685 | 14.8 |
| 400 | 25,369 | 20.4 |

插入性能
oltp_insert 工作负载的性能如下:
| 线程数 | TPS | 95% 延迟 (ms) |
|---|---|---|
| 100 | 18,409 | 7.28 |
| 200 | 30,943 | 8.28 |
| 400 | 48,621 | 11.2 |
