内容简介:数据库的基准测试是对数据库的性能指标进行定量的、可复现的、可对比的测试。基准测试可以理解为针对系统的一种压力测试。但基准测试不关心业务逻辑,更加简单、直接、易于测试,数据可以由工具生成,不要求真实;而压力测试一般考虑业务逻辑(如购物车业务),要求真实的数据。分析在当前的配置下(包括硬件配置、OS、数据库设置等),数据库的性能表现,从而找出MySQL的性能阈值,并根据实际系统的要求调整配置。
数据库的基准测试是对数据库的性能指标进行定量的、可复现的、可对比的测试。
基准测试与压力测试
基准测试可以理解为针对系统的一种压力测试。但基准测试不关心业务逻辑,更加简单、直接、易于测试,数据可以由 工具 生成,不要求真实;而压力测试一般考虑业务逻辑(如购物车业务),要求真实的数据。
作用
分析在当前的配置下(包括硬件配置、OS、数据库设置等),数据库的性能表现,从而找出 MySQL 的性能阈值,并根据实际系统的要求调整配置。
重要指标
QPS:每秒查询次数
TPS:每秒处理完成事务次数
RT:响应时间
QPS or TPS = 并发量 / 平均响应时间
并发量 = (QPS or TPS) * 平均响应时间
测试工具 sysbench
简介
sysbench是跨平台的基准测试工具,支持多线程,支持多种数据库
安装
参考github的readme,各系统不同,windows目前不支持。
(1)下载解压
wget https://github.com/akopytov/sysbench/archive/1.0.zip -O "sysbench-1.0.zip" unzip sysbench-1.0.zip cd sysbench-1.0 复制代码
(2)安装依赖 yum install automake libtool –y
(3)安装
安装之前,确保位于之前解压的sysbench目录中。
./autogen.sh ./configure export LD_LIBRARY_PATH=/usr/local/mysql/include #这里换成机器中mysql路径下的include make make install 复制代码
(4)安装成功
sysbench --version sysbench 1.0.9 复制代码
语法
基本语法 sysbench [options]... [testname] [command]
command
command是sysbench要执行的命令,包括prepare、run和cleanup,顾名思义,prepare是为测试提前准备数据,run是执行正式的测试,cleanup是在测试完成后对数据库进行清理。
testname 测试脚本
自带测试脚本
common.lua oltp.lua select.lua update_index.lua delete.lua oltp_simple.lua select_random_points.lua update_non_index.lua
oltp.lua是复杂型测试,支持事务,比较全面最常用。
接指定脚本
sysbench--test=./tests/include/oltp_legacy/oltp.lua
新版本写法
sysbench ./tests/include/oltp_legacy/oltp.lua
参数
指定数据库类型
--db-driver: 指定数据路类型 mysql
mysql参数
--mysql-host:MySQL服务器主机ip,默认localhost。
--mysql-port:MySQL服务器端口,默认3306
--mysql-user:用户名
--mysql-password:密码
--mysql-engine-trx:指定不同的存储引擎测试。
--mysql-db:指定其他数据库(默认为sbtest需要手动创建)
oltp参数
--oltp-test-mode:执行模式,包括simple、nontrx和complex,默认是complex。simple模式下只测试简单的查询;nontrx不仅测试查询,还测试插入更新等,但是不使用事务y;complex模式下测试最全面,会测试增删改查,而且会使用事务。可以根据自己的需要选择测试模式。
--oltp-tables-count:测试的表数量,根据实际情况选择
--oltp-table-size:测试的表的行数,根据实际情况选择
--threads:客户端的并发连接数
--time:测试执行的时间,单位是秒,该值不要太短,可以选择120
--report-interval:生成报告的时间间隔,单位是秒,如10
测试
准备工作
prepare 语句:
sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.1.20 --mysql-port=3306 --mysql-user=root --mysql-password=Admin@123 --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=1200 --report-interval=10 --db-driver=mysql prepare 复制代码
我们可以在数据库装看到 sysbench创建的表结构:
CREATE TABLE `sbtest` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `k` int(10) unsigned NOT NULL DEFAULT '0', `c` char(120) NOT NULL DEFAULT '', `pad` char(60) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `k` (`k`)); 复制代码
开始测试
sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=120 --report-interval=10 --db-driver=mysql run >> /home/test/mysysbench.log ##指定日志生成位置 复制代码
清除测试数据
防止影响之后测试
sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --db-driver=mysql cleanup 复制代码
日志
[ 10s] threads: 256, tps: 524.19, reads/s: 7697.05, writes/s: 2143.56, response time: 1879.46ms (99%) [ 20s] threads: 256, tps: 96.50, reads/s: 1351.01, writes/s: 373.30, response time: 9853.49ms (99%) [ 30s] threads: 256, tps: 235.50, reads/s: 3297.01, writes/s: 946.90, response time: 2150.47ms (99%) [ 40s] threads: 256, tps: 115.50, reads/s: 1617.00, writes/s: 491.40, response time: 4562.75ms (99%) [ 50s] threads: 256, tps: 262.10, reads/s: 3669.41, writes/s: 1016.10, response time: 2049.90ms (99%) [ 60s] threads: 256, tps: 121.50, reads/s: 1701.00, writes/s: 499.10, response time: 3666.03ms (99%) [ 70s] threads: 256, tps: 201.40, reads/s: 2735.10, writes/s: 769.50, response time: 3867.82ms (99%) [ 80s] threads: 256, tps: 204.70, reads/s: 2950.29, writes/s: 838.10, response time: 2724.99ms (99%) [ 90s] threads: 256, tps: 118.40, reads/s: 1657.61, writes/s: 490.00, response time: 3835.53ms (99%) OLTP test statistics: queries performed: read: 8823206 -- 读总数 write: 2520916 -- 写总数 other: 1260458 -- 其他操作总数(SELECT、INSERT、UPDATE、DELETE之外的操作,例如COMMIT等) total: 12604580 -- 全部总数 transactions: 630229 (174.94 per sec.) -- 总事务数(每秒事务数) deadlocks: 0 (0.00 per sec.) -- 发生死锁总数 read/write requests: 11344122 (3148.86 per sec.) -- 读写总数(每秒读写次数) other operations: 1260458 (349.87 per sec.) -- 其他操作总数(每秒其他操作次数) General statistics: -- 一些统计结果 total time: 3602.6152s -- 总耗时 total number of events: 630229 -- 共发生多少事务数 total time taken by event execution: 921887.7227s -- 所有事务耗时相加(不考虑并行因素) response time: -- 响应时间 min: 6.52ms -- 最小耗时 avg: 1462.78ms -- 平均耗时 max: 9918.51ms -- 最长耗时 approx. 99 percentile: 3265.01ms -- 超过99%平均耗时 Threads fairness: -- 线程的稳定性 events (avg/stddev): 2461.8320/34.60 -- 事件数(平均值/偏差) execution time (avg/stddev): 3601.1239/0.63 -- 执行时间(平均值/偏差) 复制代码
优化
下载优化工具 mysqltuner
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl -O mysqltuner.pl 复制代码
运行优化建议工具 # perl ./mysqltuner.pl
根据建议 修改mysql参数 # vim /etc/my.cnf
注意
新版本需要指定数据库类型--mysql-db。 如果连续进行多次测试,注意确保之前测试的数据已经被清理干净。 复制代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- mysql基准测试工具sysbench初探
- 理性理解 MySQL 基准测试工具 sysbench
- 详解 MySQL 基准测试和 sysbench 工具
- GLUE基准新突破:微软多任务模型首次超越自然语言人类基准
- 聊聊基准测试
- Hadoop 集群基准测试
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Black Box Society
Frank Pasquale / Harvard University Press / 2015-1-5 / USD 35.00
Every day, corporations are connecting the dots about our personal behavior—silently scrutinizing clues left behind by our work habits and Internet use. The data compiled and portraits created are inc......一起来看看 《The Black Box Society》 这本书的介绍吧!