📣
TiDB Cloud Essential 开放公测中。此页面由 AI 自动翻译,英文原文请见此处。

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)

  • 集群配置:

    节点类型节点规格节点数量节点存储
    TiDB16 vCPU, 32 GiB2N/A
    TiKV16 vCPU, 64 GiB31000 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_insertoltp_read_writeoltp_update_indexoltp_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 性能测试。

  1. TiDB Cloud 控制台中,创建一个满足测试环境要求的 TiDB Cloud Dedicated 集群。

    更多信息,请参见创建 TiDB Cloud Dedicated 集群

  2. 在基准测试执行器上,连接到新创建的集群并创建名为 sbtest 的数据库。

    要连接到集群,请参见通过专用连接点连接到 TiDB Cloud Dedicated

    要创建 sbtest 数据库,执行以下 SQL 语句:

    CREATE DATABASE sbtest;
  3. 将 Sysbench 数据加载到 sbtest 数据库。

    1. 本文中的测试基于 sysbench 实现。要安装 sysbench,请参见从源代码构建和安装

    2. 运行以下 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
  4. 运行以下 sysbench run 命令对不同工作负载进行 Sysbench 性能测试。本文对五个工作负载进行测试:oltp_point_selectoltp_read_writeoltp_update_non_indexoltp_update_indexoltp_insert。对于每个工作负载,本文使用不同的 ${THREAD} 值进行三次测试。对于 oltp_point_selectoltp_read_write,值为 50100200。对于其他工作负载,值为 100200400。每个并发测试持续 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 工作负载的性能如下:

线程数TPS95% 延迟 (ms)
5032,7331.94
10062,1232.04
200107,7952.56

Sysbench 点查性能

读写性能

oltp_read_write 工作负载的性能如下:

线程数TPS95% 延迟 (ms)
501,25845.8
1002,24352
2003,18794.7

Sysbench 读写性能

更新非索引性能

oltp_update_non_index 工作负载的性能如下:

线程数TPS95% 延迟 (ms)
10012,96910.10
20023,26511.2
40039,54713.2

Sysbench 更新非索引性能

更新索引性能

oltp_update_index 工作负载的性能如下:

线程数TPS95% 延迟 (ms)
10011,67811.0
20017,68514.8
40025,36920.4

Sysbench 更新索引性能

插入性能

oltp_insert 工作负载的性能如下:

线程数TPS95% 延迟 (ms)
10018,4097.28
20030,9438.28
40048,62111.2

Sysbench 插入性能

文档内容是否有帮助?