MySQL基准测试

伯乐在线注:本文来自文章作者@IT技術櫻花祭 的投稿(原文链接)。如果其他朋友也想投稿,请发邮件至 webmaster@jobbole.com,或直接给@伯乐在线官方微博 私信投递。

———————————————————-

为什么需要基准测试:

  1. 可以获知MySQL的工作负荷
  2. 获取系统对不对事物处理的性能表现
  3.  搭建的虚拟环境,远远超过现实的针对的状况 所能获取的信息
  4. 降低风险,模拟评估硬件需求,降低调整带来的风险
  5. 在环境变动时的性能表现,如不同服务配置下的并发性能、用户高峰时期,或者低峰期时的性能表现、对不同数据处理的性能等。

测试策略

  1. 集成式基准测试(full-stack):将整个应用作为整体来做基准测试
  2. 单件式基准测试(single-componet),单独测出MySQL系统

集成式基准测试的原因

1.系统也许影响性能的不是MySQL瓶颈问题
2.Web服务器,网络条件,数据库,应用程序的代码都有可能影响性能, 测试不仅仅是评估MySQL的性能,而是整个系统的性能
3.整体测试可以获得系统各部分高速缓存的性能报告
4.可以获得系统真是的性能表现, 而不仅仅是MySQL部分

一些问题: 整体测试复杂,需要更多的时间,工作量,难度也更加。另外基准测试的报告数据也许不能反映真实系统的性能表现。

单件式基准测试

1.只想知道MySQL的性能:如查询(Query)、缓存(Cache)等问题
2.给出系统的一个性能快照,快速的改进系统

基准测试前,应当确认需要测试目标,这样就可以决定是用什么工具,并安排测试计划。

主要考虑一下测试度量标准评估测试目标:

1.吞吐量(throughput)

单位时间处理的事务量
MySQL基准测试2.响应时间和延迟(Response time or latency)

通过工具和方式获取相关事务处理的最短响应时间,最长响应时间,平均响应时间,延迟时间。统计某一事务、处理某段响应时间(如1mm~2mm)的所占比例。使用统计学和数据可视化工具把数据图表化,以便于分析使用。MySQL基准测试


3.并发性(Concurrency)

作 为系统的并发性一般被认为是同一时间多少用户访问网站,网站的并发量不代表MySQL数据库的并发量。 更准确的度量是某峰值时间用户同时可以产生多少并发请求。影响并发性的因素是多样的,服务器软件被指也会影响并发的性能,建站开发语言也会影响并发性能。 另外也许服务器有上千个MySQL连接,但实际上只有连接几个同时在进行查询,更新等操作而已。

4.拓展性(Scalability)

对于工作负荷量变化的系统,拓展性是非常重要的。
一般建议需要满足两倍性。 如需要提供能应付事务平均吞吐量两倍的系统,两倍的资源(如处理器,内存等)。
另外可以通过时序表(数据表,直方图,汇总表)统计响应时间,吞吐量等,作为参考度量拓展性是否满足要求。

基准测试常用工具

Full-stack tool

ab – Apache HTTP server benchmarking tool
ab is a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server. It is designed to give you an impression of how your current Apache installation performs. This especially shows you how many requests per second your Apache installation is capable of serving. 

http_load
http_load runs multiple http fetches in parallel, to test the throughput of a web server. However unlike most such test clients, it runs in a single process, so it doesn’t bog down the client machine. It can be configured to do https fetches as well. 

JMeter

The Apache JMeter™ desktop application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions. 

Single-Component Tools

1.mysqlslap (http://dev.mysql.com/doc/refman/5.1/en/mysqlslap.html)
2.MySQL Benchmark Suite (sql-bench)
3.Super Smack
4.Database Test Suite
5.Percona’s TPCC-MySQL Tool
6.sysbench (https://launchpad.net/sysbench) is a multithreaded system benchmarking tool.

基准测试注意事项

1.忌讳:

A.100G的数据,实际上只用到1G的测试数据

B.多用户系统,只测试单用户数据

C.分布式系统,却只测试单服务器。

D.使用相同的查询数据,循环测试。实际中的查询是不可能的,这会改变数据库系统的缓存内容单数据却会被缓存

E.忽略测试错误,故障的系统的基准测试没有任何意义。

F.以及常见一些牛头不对马面的数据测试, 比如使用不真实的数据,只会浪费测试时间和资金。

G. 请不要委托免费的测试组织测试

……….

2.设计与计划

A.需要设计达到什么样,比如高并发性,高吞吐量等

B.发话太多不写了

3.怎么确定测试周期与时间多长为适宜(相信测试获得的数据,不要半途而废,那样还不如不做测试。一般测试但满意为止)

3.获取系统性能与状态

4. 获取正确的与需要信息。 (如果一时无法确认需要什么,尽可能获取足够多的数据)

5.实用工具分析,度量性能。

关于数据分析与统计学的知识,请务必掌握了解。

 

收藏 评论

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部