MySQL性能基础测试(2)

mysql> set @input := 'hello world'; Query OK, 0 rows affected (0.00 sec) mysql> select benchmark(1000000,MD5(@input)); +--------------------------------+ | benchmark(1000000,MD5(@input)) | +--------------------------------+ | 0 | +--------------------------------+ 1 row in set (1.45 sec) mysql> select benchmark(1000000,SHA1(@input)); +---------------------------------+ | benchmark(1000000,SHA1(@input)) | +---------------------------------+ | 0 | +---------------------------------+ 1 row in set (1.40 sec) 

虽然benchmark()函数用起来很方便,但是不适合用来做真正的基准测试,因为该函数只是简单地返回服务器执行表达式的时间,不会涉及分析和开销,等因素。

而且表达式必须像这个例子一样包含用户定义的变量(input),否则会多次执行同样的表达式会因为系统缓存命中而影响结果。

 

具体测试实践,请看sysbench实践,tpcc-mysql实践;

 

 总结

 

 四小类:写入测试,更新测试,纯度测试,混合模式

 性能测试衡量指标:

 服务吞吐量

 TPS--每秒执行事务的总量

 QPS--每秒执行请求的总量

 服务响应时间

 服务并发性

 设计测试常见错误:

使用数据子集而不是全集,

与真实用户行为不匹配,

没有检查错误,

忽略了系统预热过程,测试时间太短;

测试方法

 测试规划:

记录测试数据,

系统配置步骤,

测试步骤,

分析结果,

预热方案;

 测试时间:测试应该运行足够长的时间,至少等于系统预热的时间。

 获取系统性能和状态:cpu,IO,网络流量,mysql状态计数器;

 运行测试:自动化测试包含:数据装载,系统预热,执行测试,记录结果。

 绘图分析:直观的发现问题;

 测试工具:sysbench,tpcc-mysql,benchmark()

 测试小结:

 IO Bound测试数据量要远大于内存,cpu Bound测试数据量要小于内存

 测试时间建议大于60分钟,减小误差;有系统预热时间;

 Sysbench更倾向于测试Mysql性能,Tpcc更接近于业务

 运行测试程序需要同时监控机器负载,Mysql各项监控指标

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ce47f95938a4b60ae87dc5efd1e230d7.html