数据库性能测试:sysbench使用方法详解(2)

Compiled-in tests:
  fileio - File I/O test
  cpu - CPU performance test
  memory - Memory functions speed test
  threads - Threads subsystem performance test
  mutex - Mutex performance test

其中,command部分有4类:prepare run cleanup和help:
•prepare:准备数据的命令。例如,在sysbench压力测试之前,需要先准备好测试库、测试表以及测试表中的数据。具体用法见后文。

•run:表示进行压力测试。

•cleanup:清除测试时产生的数据。

•help:输出给定lua脚本的帮助信息。

test_lua是想要使用的lua脚本,如果是rpm包安装的sysbench,则这些脚本都是/usr/share/sysbench目录下。对于一般的数据库测试,只需使用和oltp有关的lua脚本就足够。

options和lua_options是不同的,options是sysbench的选项,lua_options是lua脚本的选项,lua_options应该要放在test_lua的后面(非必需,但建议)。

例如,要查看oltp_common.lua的用法,可以:
sysbench /usr/share/sysbench/oltp_common.lua help

3.准备测试数据

首先创建sysbench所需数据库sbtest(这是sysbench默认使用的库名,必须创建测试库)。
mysqladmin -h127.0.0.1 -uroot -pP@ssword1! -P3306 create sbtest;

然后,准备测试所用的表,这些测试表放在测试库sbtest中。这里使用的lua脚本为/usr/share/sysbench/oltp_common.lua。
sysbench --mysql-host=127.0.0.1 \
        --mysql-port=3306 \
        --mysql-user=root \
        --mysql-password=P@ssword1! \
        /usr/share/sysbench/oltp_common.lua \
        --tables=10 \
        --table_size=100000 \
        prepare

其中--tables=10表示创建10个测试表,--table_size=100000表示每个表中插入10W行数据,prepare表示这是准备数的过程。
mysql> show tables from sbtest;
+------------------+
| Tables_in_sbtest |
+------------------+
| sbtest1          |
| sbtest10        |
| sbtest2          |
| sbtest3          |
| sbtest4          |
| sbtest5          |
| sbtest6          |
| sbtest7          |
| sbtest8          |
| sbtest9          |
+------------------+

mysql> select count(*) from sbtest.sbtest1;
+----------+
| count(*) |
+----------+
|  100000 |
+----------+

如果想要清除这10个表,可使用cleanup命令。
sysbench --mysql-host=127.0.0.1 \
        --mysql-port=3306 \
        --mysql-user=root \
        --mysql-password=P@ssword1! \
        /usr/share/sysbench/oltp_common.lua \
        --tables=10 \
        cleanup

4.数据库测试和结果分析

稍微修改下之前准备数据的语句,就可以拿来测试了。

需要注意的是,之前使用的lua脚本为oltp_common.lua,它是一个通用脚本,是被其它lua脚本调用的,它不能直接拿来测试。

所以,我这里用oltp_read_write.lua脚本来做读、写测试。还有很多其它类型的测试,比如只读测试、只写测试、删除测试、大批量插入测试等等。可找到对应的lua脚本进行调用即可。
sysbench --threads=4 \
        --time=20 \
        --report-interval=5 \
        --mysql-host=127.0.0.1 \
        --mysql-port=3306 \
        --mysql-user=root \
        --mysql-password=P@ssword1! \
        /usr/share/sysbench/oltp_read_write.lua \
        --tables=10 \
        --table_size=100000 \
        run

以下是测试返回的结果:
Initializing worker threads...

Threads started!

####以下是每5秒返回一次的结果,统计的指标包括:
#### 线程数、tps(每秒事务数)、qps(每秒查询数)、
#### 每秒的读/写/其它次数、延迟、每秒错误数、每秒重连次数
[ 5s ] thds: 4 tps: 130.16 qps: 2606.30 (r/w/o: 1824.51/520.66/261.13) lat (ms,95%): 104.84 err/s: 0.00 reconn/s: 0.00
[ 10s ] thds: 4 tps: 126.74 qps: 2539.17 (r/w/o: 1778.17/507.52/253.47) lat (ms,95%): 108.68 err/s: 0.00 reconn/s: 0.00
[ 15s ] thds: 4 tps: 136.54 qps: 2736.34 (r/w/o: 1915.25/548.01/273.07) lat (ms,95%): 102.97 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 4 tps: 107.44 qps: 2148.65 (r/w/o: 1505.60/428.17/214.89) lat (ms,95%): 132.49 err/s: 0.00 reconn/s: 0.00

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/64041b07011b2860a70b156b93a081a6.html