22# by ljk 20161003
33
44# 通过sysbench测试mysql相关性能,并将关键数据存储于‘test.sysbenc_test’表中
5-
5+
6+ # ----------自定义部分----------
67# 定义记录测试结果的mysql连接相关参数,本例我在测试机上记录测试结果
78m_user=' test'
89m_passwd=' test'
910m_port=' 3307'
1011m_host=' 127.0.0.1'
12+ # 测试结果存储于哪个库
13+ m_db=' test'
14+ # 测试结果存储于哪个表
15+ m_table=' sysbench_test'
1116
1217# 定义错误日志文件
1318log=/tmp/mysql_oltp.log
1419# 定义测试线程
1520threds_num=' 8 24 48 64 96 128 160 196 256'
16-
21+ # 每种条件测试多少次,分析时取平均值
22+ times=3
23+ # ----------自定义部分结束----------
24+
1725# 测试函数
1826sb_test () {
1927
@@ -22,9 +30,9 @@ sb_test() {
2230 if [ " $3 " == " read-only" ]; then read_only=' on' ; else read_only=' off' ; fi # 根据脚本参数确定是否read-only
2331
2432 # 创建记录测试信息的表
25- echo -e " \n---------------\n创建测测试结果表test.sysbench_test \n---------------"
33+ echo -e " \n---------------\n创建测测试结果表 $m_db . $m_table \n---------------"
2634 mysql -u$m_user -p$m_passwd -P$m_port -h$m_host << EOF
27- CREATE TABLE IF NOT EXISTS test.sysbench_test (
35+ CREATE TABLE IF NOT EXISTS $m_db . $m_table (
2836 scenario varchar(30) NOT NULL DEFAULT '' COMMENT '测试场景',
2937 server_name varchar(15) NOT NULL COMMENT '被测DB name',
3038 test_type varchar(15) NOT NULL COMMENT 'read-only,read-write,insert等',
@@ -38,11 +46,14 @@ sb_test() {
3846 95_pct_time decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '单位毫秒'
3947 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
4048EOF
41- if [ $? -ne 0 ]; then exit -1; fi
42-
43- # 开始测试,每种条件测3次,分析时取平均值
49+ if [ $? -ne 0 ]; then
50+ echo " create table $m_db .$m_table failed"
51+ exit -1
52+ fi
53+
54+ # 开始测试,每种条件测$times次,分析时取平均值
4455 echo -e " \n---------------\n场景:$2 模式:$3 \n---------------"
45- for i in {1..3} ; do
56+ for i in ` seq $times ` ; do
4657
4758 for sb_threds in $threds_num ; do # 按照指定的sysbench线程测试
4859 printf " %-10s %s\n" $sb_threds 线程 第$i 次运行...
6071
6172 # 本次测试结果写入数据库
6273 mysql -u$m_user -p$m_passwd -P$m_port -h$m_host << EOF 2> $log
63- INSERT INTO test.sysbench_test (scenario,server_name,test_type,sb_threads,server_load,request_read,request_write,request_total,request_per_second,total_time,95_pct_time)
74+ INSERT INTO $m_db . $m_table (scenario,server_name,test_type,sb_threads,server_load,request_read,request_write,request_total,request_per_second,total_time,95_pct_time)
6475 VALUES ('$2 ','$4 ','$3 ','$sb_threds ','$load ',$result );
6576EOF
6677
@@ -90,7 +101,7 @@ sb_analyse() {
90101 convert(avg(request_per_second),decimal(12,2)) as request_per_second,
91102 convert(avg(total_time),decimal(12,2)) as total_time,
92103 convert(avg(95_pct_time),decimal(12,2)) as 95_pct_time
93- FROM test.sysbench_test group by scenario,server_name,test_type,sb_threads
104+ FROM $m_db . $m_table group by scenario,server_name,test_type,sb_threads
94105EOF
95106}
96107
@@ -121,7 +132,7 @@ sb_chart() {
121132
122133 if [ $# -eq 0 ]; then
123134 # 对分析结果中所有场景进行画图
124- for scenario in ` mysql -u$m_user -p$m_passwd -h$m_host -P$m_port -s -e " select distinct(scenario) from test.sysbench_test " 2> /dev/null` ; do
135+ for scenario in ` mysql -u$m_user -p$m_passwd -h$m_host -P$m_port -s -e " select distinct(scenario) from $m_db . $m_table " 2> /dev/null` ; do
125136 sb_analyse | awk -v scenario=$scenario ' $1 == scenario {print}' > /tmp/" $scenario .dat"
126137 plot_cmd=${plot_cmd} " '/tmp/" $scenario .dat" ' using $col_num :xtic(4) title '$scenario ' with linespoints lw 2,"
127138 done
0 commit comments