TiDB-性能测试

使用sysbench测试TiDB

建议使用 Sysbench 1.0 或之后的更新版本

软件下载地址

https://github.com/akopytov/sysbench
https://github.com/akopytov/sysbench/archive/1.0.16.tar.gz

安装sysbench

依赖包安装

yum -y install gcc gcc-c++ automake make libtool pkgconfig libaio-devel openssl-devel

解压并编译安装sysbench

tar -zxvf 1.0.16.tar.gz

cd sysbench-1.0.16

./autogen.sh

./configure --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib64/mysql --with-mysql

make -j 2 && make install

测试过程

sysbench配置

配置文件参考示例如下:

mysql-host=192.168.10.180
mysql-port=4000
mysql-user=root
mysql-password=root
mysql-db=sbtest
time=600
threads=16
report-interval=10
db-driver=mysql

数据导入

通过 MySQL 客户端连接到TiDB Server并执行以下 SQL 语句,创建测试数据库 sbtest

create database sbtest;

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

配置lua测试文件

tidb-bench/oltp_common.lua at master · pingcap/tidb-bench · GitHub

开始导入数据

config 文件为上一小节中配置的文件

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

数据预热与统计信息收集

数据预热可将磁盘中的数据载入内存的 block cache 中,预热后的数据对系统整体的性能有较大的改善,建议在每次重启集群后进行一次数据预热。

若使用的当前Sysbench 版本没有提供数据预热的功能,需要手动进行数据预热。如果使用更新的 Sysbench 版本,可以使用自带的预热功能,可以跳过。

以 Sysbench 中某张表 sbtest7 为例,执行如下 SQL 语句 进行数据预热:

SELECT COUNT(pad) FROM sbtest7 USE INDEX (k_7);

统计信息收集有助于优化器选择更为准确的执行计划,可以通过 analyze 命令来收集表 sbtest 的统计信息,每个表都需要统计。

ANALYZE TABLE sbtest7;

测试命令

Point select 测试命令
sysbench --config-file=config oltp_point_select --tables=32 --table-size=10000000 run
Update index 测试命令
sysbench --config-file=config oltp_update_index --tables=32 --table-size=10000000 run
Read-only 测试命令
sysbench --config-file=config oltp_read_only --tables=32 --table-size=10000000 run
原文地址:https://www.cnblogs.com/binliubiao/p/14393278.html