1. 性能指标概览
2. 指标计算方式
2.1 tps
mysql> SHOW GLOBAL STATUS LIKE 'Com_commit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Com_commit | 22402 |
+---------------+-------+
1 row in set (0.00 sec)
mysql> SHOW GLOBAL STATUS LIKE 'Com_rollback';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Com_rollback | 0 |
+---------------+-------+
1 row in set (0.00 sec)
mysql> SHOW GLOBAL STATUS LIKE 'Uptime'
-> ;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Uptime | 3319 |
+---------------+-------+
1 row in set (0.01 sec)
TPS=(Com_commit + Com_rollback)/Uptime
2.2 QPS
2.3 IOPS
理论上可以计算出磁盘的最大IOPS,即IOPS = 1000 ms/ (Tseek + Troatation),忽略数据传输时间。假设磁盘平均物理寻道时间为3ms, 磁盘转速为7200,10K,15K rpm,则磁盘IOPS理论最大值分别为, IOPS = 1000 / (3 + 60000/7200/2) = 140 IOPS = 1000 / (3 + 60000/10000/2) = 167 IOPS = 1000 / (3 + 60000/15000/2) = 200
3. mysqlslap
3.1 压测
[root@jeames ~]# mysqlslap --help

3.2 案例
mysqlslap -uroot -proot -h292.168.1.54 -P3306 \ --create-schema=mysqlslap --auto-generate-sql \ --auto-generate-sql-load-type=mixed \ --concurrency=100,200 --number-of-queries=1000 \ --iterations=10 --number-int-cols=7 \ --number-char-cols=13 --auto-generate-sql-add-autoincrement Benchmark #运行所有语句的平均时间,单位秒 Average number of seconds to run all queries: 0.018 seconds #运行所有语句的最小秒数 Minimum number of seconds to run all queries: 0.018 seconds #运行所有语句的最大秒数 Maximum number of seconds to run all queries: 0.018 seconds #客户端数量 Number of clients running queries: 1 #每个客户端运行查询的平均数 Average number of queries per client: 0 该语句表示测试并发为 100 和 200 的情况,进行 1000 次访问(该值一般这样预估出来:并发客户数×每客户查询次数)。这样的测试方法迭代 10 次,最终显示最大、 最小、平均值 其中:--debug-info,代表要额外输出 CPU 以及内存的相关信息。如果报错 Option 'debug-info' used, but is disabled 请取消 debug-info 参数 -number-int-cols=7 表示生成的表中必须有 7 个 int 类型的列 -number-char-cols=13 表示生成的表中必须有 13 个 char 类型的列 -concurrency 代表并发数量,多个可以用逗号隔开,concurrency=10,50,100, 并发连接线程数分别是 10、50、100 个并发。 --engines 代表要测试的引擎,可以有多个,用分隔符隔开。 --iterations 代表要运行这些测试多少次。 --auto-generate-sql 代表用系统自己生成的 SQL 脚本来测试。 --auto-generate-sql-load-type 代表要测试的是读还是写还是两者混合的(read,write,update,mixed) --number-of-queries 代表总共要运行多少次查询。每个客户运行的查询数量可以用查询总数/并发数来计算。 --debug-info 代表要额外输出 CPU 以及内存的相关信息。 --number-int-cols :创建测试表的 int 型字段数量 --auto-generate-sql-add-autoincrement : 代表对生成的表自动添加 auto_increment 列,从 5.1.18 版本开始 --number-char-cols 创建测试表的 char 型字段数量。 --create-schema 测试的 schema,MySQL 中 schema 也就是 database。 --query 使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者 sql 语句来执行测试。 --only-print 查看语句做了什么。

