分享知识,分享快乐

0%

用 Sysbench 测试 TiDB

用 Sysbench 测试 TiDB

Sysbench 配置

以下为 Sysbench 配置文件样例:

1
2
3
4
5
6
7
8
9
mysql-host={TIDB_HOST}
mysql-port=4000
mysql-user=root
mysql-password=password
mysql-db=sbtest
time=600
threads={8, 16, 32, 64, 128, 256}
report-interval=10
db-driver=mysql

可根据实际需求调整其参数,其中 TIDB_HOST 为 TiDB server 的 IP 地址(配置文件中不能写多个地址),threads 为测试中的并发连接数,可在 “8, 16, 32, 64, 128, 256” 中调整,导入数据时,建议设置 threads = 8 或者 16。调整后,将该文件保存为名为 config 的文件。

配置文件参考示例如下:

1
2
3
4
5
6
7
8
9
mysql-host=172.16.30.33
mysql-port=4000
mysql-user=root
mysql-password=password
mysql-db=sbtest
time=600
threads=16
report-interval=10
db-driver=mysql

数据导入

注意

如果 TiDB 启用了乐观事务模型(默认为悲观锁模式),当发现并发冲突时,会回滚事务。将 tidb_disable_txn_auto_retry 设置为 off 会开启事务冲突后的自动重试机制,可以尽可能避免事务冲突报错导致 Sysbench 程序退出的问题。

在数据导入前,需要对 TiDB 进行简单设置。在 MySQL 客户端中执行如下命令:

1
set global tidb_disable_txn_auto_retry = off;

然后退出客户端。

重新启动 MySQL 客户端执行以下 SQL 语句,创建数据库 sbtest

1
create database sbtest;

调整 Sysbench 脚本创建索引的顺序。Sysbench 按照“建表->插入数据->创建索引”的顺序导入数据。对于 TiDB 而言,该方式会花费更多的导入时间。你可以通过调整顺序来加速数据的导入。

假设使用的 Sysbench 版本为 1.0.20,可以通过以下两种方式来修改:

  1. 直接下载为 TiDB 修改好的 oltp_common.lua 文件,覆盖 /usr/share/sysbench/oltp_common.lua 文件。
  2. /usr/share/sysbench/oltp_common.lua 的第 235-240 行移动到第 198 行以后。

注意

此操作为可选操作,仅节约了数据导入时间。

命令行输入以下命令,开始导入数据,config 文件为上一步中配置的文件:

1
sysbench --config-file=config oltp_point_select --tables=32 --table-size=10000000 prepare