sysbench对自装MySQL数据库进行基准测试
一、 安装sysbench
wget https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh chmod +x script.rpm.sh ./script.rpm.sh yum install -y sysbench
二、准备测试表
sysbench //基于mysql的驱动去连接mysql数据库 --db-driver=mysql //连续访问300秒 --time=300 //10个线程模拟并发访问 --threads=10 //每隔1秒输出一下压测情况 --report-interval=1 //本机 --mysql-host=127.0.0.1 //端口号:3306 --mysql-port=3306 //测试用户 --mysql-user=root //测试密码 --mysql-password=******* //测试数据库 --mysql-db=test_db //模拟新建20个表 --tables=20 //100万条数据 执行oltp数据库的读写测试 --table_size=1000000 oltp_read_write //参照这个命令的设置去构造出来我们需要的数据库里的数据 //自动创建20个测试表,每个表里创建100万条测试数据 --db-ps-mode=disable prepare
执行命令:
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable prepare
执行命令之后:
三、开始测试
测试机配置
虚拟机 8vCPUs | 32GB | CentOS7.7 64bit | MariaDB 10.4.12
1、测试综合TPS
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable run
执行命令后:
thds 压测线程数 | tps 每秒事务数 | qps 每秒请求数 | (r/w/o) 每秒的请求数中读请求个数/写请求个数/其他请求个数 | lat(ms,95%) 95% 的请求延迟都在多少以下 | err/s 错误数 | reconn/s 重连数
测试结果:
SQL statistics: queries performed: read: 2468032 #300s执行了246万读请求 write: 705152 #300s执行了70万写请求 other: 352576 #300s执行了30万其他请求 total: 3525760 #300s执行了共352万请求 transactions: 176288 (587.61 per sec.) #300s执行了共17万次事务(每秒587次事务) queries: 3525760 (11752.14 per sec.) #300s执行了查询共352万次请求(每秒1.1万次请求) ignored errors: 0 (0.00 per sec.) #300s忽略错误总数(每秒忽略错误次数) reconnects: 0 (0.00 per sec.) #300s重连总数(每秒重连次数) General statistics: total time: 300.0077s #总耗时 total number of events: 176288 #总发生的事务数 Latency (ms): min: 4.17 #最小延迟 4.17ms avg: 17.01 #平均延迟 17.01ms max: 418.77 #最大延迟 418.77ms 95th percentile: 44.98 #95%的请求延迟 44.98ms sum: 2999093.13 Threads fairness: events (avg/stddev): 17628.8000/226.93 execution time (avg/stddev): 299.9093/0.00
2、其他测试
只读性能 oltp_read_only
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_only --db-ps-mode=disable run
删除性能 oltp_delete
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=1000000 oltp_delete --db-ps-mode=disable run
更新索引字段性能 oltp_update_index
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=1000000 oltp_update_index --db-ps-mode=disable run
更新非索引字段性能 oltp_update_non_index
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=1000000 oltp_update_non_index --db-ps-mode=disable run
插入性能 oltp_insert
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=1000000 oltp_insert --db-ps-mode=disable run
写入性能 oltp_write_only
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=1000000 oltp_write_only --db-ps-mode=disable run
测试完成进行清理 CleanUp
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable cleanup