基准测试
工具:sysbench
安装:yum -y install sysbench
准备数据:
sysbench xxx.lua --mysq-host=127.0.0.1 --mysq-port=3306 --mysql-user=root --mysql-password=password --threads=104 --time=120 --report-interval=10 --mysql-db=test_shaolin prepare
启用104个线程,运行120s,每10秒打印一次统计数据,数据库的database是test_shaolin,执行指定的lua脚本
运行:
就是把prepare换成run
数据清理:
就是把prepare换成cleanup
SQL statistics:
queries performed:
read: 0
write: 1759525
other: 0
total: 1759525
transactions: 1759525 (14660.96 per sec.【tps】)
queries: 1759525 (14660.96 per sec.【qps】)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 120.0129s
total number of events: 1759525
Latency (ms):
min: 2.41
avg: 2.73
max: 83.72
95th percentile: 2.91
sum: 4796533.45
Threads fairness:
events (avg/stddev): 43988.1250/1548.42
execution time (avg/stddev): 119.9133/0.01
jmeter进行真实sql压测
1.首先添加一个线程组
然后添加一个配置元件-JDBC Connection Configuration

简单来说:
Variable Name: 变量名称,需要变量名绑定到池。需要唯一标识。与JDBC取样器中的相对应,决定JDBC取样的配置。简单理解就是在JDBC request的时候确定去哪个绑定的配置。
Max Number of Connection: 数据库最大链接数
PoolTimeout: 数据库链接超时,单位ms
Idle Cleanup Interval (ms): 数据库空闲清理的间隔时间,单位ms
Auto Commit:自动提交。有三个选项,true、false、编辑(自己通过jmeter提供的函数设置)
Transaction Isolation:
事务间隔级别设置,主要有如下几个选项:(对JMX加解密)
【TRANSACTION_NODE 事务节点 、
TRANSACTION_READ_UNCOMMITTED 事务未提交读、
TRANSACTION_READ_COMMITTED 事务已提交读 、
TRANSACTION_SERIALIZABLE 事务序列化 、
DEFAULT 默认、
TRANSACTION_REPEATABLE_READ 事务重复读、编辑
Keep-Alive: 是否保持连接Max Connection age (ms):最大连接时长,超过时长的会被拒绝Validation Query:验证查询,检验连接是否有效(数据库重启后之前的连接都失效,需要验证查询)。。。。。。
Database URL:如jdbc:mysql://localhost:3306/test 表示本地数据库,3306端口,数据库名称为test
JDBCDriver Class: JDBC的类,如org.gjt.mm.mysql.Driver
2.添加一个JDBC Request取样器

名字一定要跟配置元件那个名字一样,这样才知道是那个连接池