数据库测试工具Sysbench
安装
yum install m4 autoconf automake libtool
yum -y install sysbench
sysbench --version
以oltp_read_only.lua为例压测MySQL:
准备数据:
# sysbench /usr/share/sysbench/oltp_read_only.lua --mysql-host=192.168.10.54 --mysql-port=3306 --mysql-user=root --mysql-password='root' --mysql-db=test --db-driver=mysql --tables=10 --table-size=1000000 --report-interval=10 --threads=128 --time=120 prepare
压测:
# sysbench /usr/share/sysbench/oltp_read_only.lua --mysql-host=192.168.10.54 --mysql-port=3306 --mysql-user=root --mysql-password='root' --mysql-db=test --db-driver=mysql --tables=10 --table-size=1000000 --report-interval=10 --threads=128 --time=120 run
清理:
cleanup
oltp_read_only
oltp_point_select
oltp_insert
oltp_read_write
对于mysql的OLTP测试,和file一样,同样需要经历prepare,run,cleanup三个阶段。prepare阶段会在数据库中产生一张指定行数的表,默认表在sbtest架构下,表名为
sbtest(sysbench默认生成表的存储引擎为innodb),如创建一张8000万条记录的表
初始化测试表
sysbench --test=/usr/share/doc/sysbench/tests/db/oltp.lua --oltp-table-size=1000000 --mysql-table-engine=innodb --mysql-user=sysbench --mysql-password=sysbench --mysql-port=3306 --mysql-host=10.0.37.123 --mysql-db=test prepare
参数说明:
--oltp-table-size: 指定表的大小,即表的行数
--mysql-table-engine: 指定存储引擎,如myisam,innodb,heap,ndbcluster,bdb,maria,falcon,pbxt
--mysql-db: 指定在哪个数据库创建测试表,默认为sbtest库,需要提前创建好
--test: 指定Lua脚本,参数选项大部分同老版本的--test=oltp help
--db-driver: 指定驱动,默认为Mysql
--myisam-max-rows: 指定Myisam表的MAX_ROWS选项
--oltp-secondary: 测试表将使用二级索引KEY xid(ID) 替代 PRIMARY KEY (ID),innodb引擎内部为每个表创建唯一6字节的主键索引
--oltp-auto-inc: 设置id列为auto-incremental,值为on或off,默认为on
select测试
sysbench --test=/usr/share/doc/sysbench/tests/db/select.lua --oltp-table-size=1000000 --mysql-table-engine=innodb --mysql-user=sbtest --mysql-password=sbpass --mysql-port=3306 --mysql-host=192.168.70.72 --mysql-db=sbtest --max-requests=0 --max-time=120 --oltp-tables-count=1 --report-interval=10 --num-threads=8 run
参数说明:
--max-time 来指定测试时长
--oltp-tables-count 指定测试表数量
--max-requests 指定最大请求数,默认10000,0是不限制
--num-threads 指定线程数
prepare 是一个准备过程,比如测oltp需要load数据到表里
run 是真正的测试过程
cleanup 是清除过程
update测试
sysbench --test=/usr/share/doc/sysbench/tests/db/update_index.lua --oltp-table-size=1000000 --mysql-table-engine=innodb --mysql-user=sbtest --mysql-password=sbpass --mysql-port=3306 --mysql-host=192.168.70.72 --mysql-db=sbtest --max-requests=0 --max-time=120 --oltp-tables-count=1 --report-interval=10 --num_threads=8 run
insert测试
sysbench --test=/usr/share/doc/sysbench/tests/db/insert.lua --oltp-table-size=1000000 --mysql-table-engine=innodb --mysql-user=sbtest --mysql-password=sbpass --mysql-port=3306 --mysql-host=192.168.70.72 --mysql-db=sbtest --max-requests=0 --max-time=120 --oltp-tables-count=1 --report-interval=10 --num_threads=8 run
point_select
sysbench /usr/share/sysbench/oltp_read_only.lua --mysql-host=192.168.14.240 --mysql-port=3316 --mysql-user=root --mysql-password='root' --mysql-db=test --db-driver=mysql --tables=10 --table-size=1000000 --report-interval=10 --threads=128 --time=300 prepare
sysbench /usr/share/sysbench/oltp_read_only.lua --mysql-host=192.168.14.240 --mysql-port=3316 --mysql-user=root --mysql-password='root' --mysql-db=test --db-driver=mysql --tables=10 --table-size=1000000 --report-interval=10 --threads=128 --time=300 prepare
所有自带的测试项目:
测试结果,关注红色字体