高性能mysql读书笔记(一)

来源:互联网 发布:软件编程家教 编辑:程序博客网 时间:2024/04/29 18:26

1.基准测试与性能分析

基准测试和性能分析是发现系统瓶颈的两基本方法:

   基准测试用来测量衡定系统的整体性能,这有助于判断系统的处理能力,提示影响或不影响系统性能的因素,也可以用来提示应用在处理不同数据时的性能表现。

   分析有助于发现应用在什么地方花费了最多时间,或者消耗了最多资源。

 

基准测试可帮你达成的目标:

  • 测试当前应用的运行状况。
  • 验证系统的扩展性。如模拟高负载状态,检测处理能力。
  • 为未来的业务增长进行规划。
  • 测试应用适应可变环境的能力。
  • 检测在不同硬件、不同软件、不同操作系统下配置下的性能表现。

一般的测试指标有下面几种:

  • 每时间单位的事务处理量
  • 响应时间或时延
  • 扩展性
  • 并发性

测试时应该避免的一些错误:

  • 使用真实数据的一个子集,而不是全集。例如应用需要数百GB数据,但测试只用了1GB。
  • 使用错误的分布式数据。
  • 使用非真实的分布参数。
  • 在多用户应用中使用单用户想定进行测试。
  • 在单服务器上测试一个分布式应用。
  • 与真实用户行为不匹配。
  • 循环运行同一个查询。真实的查询是不相同的。
  • 忽略错误检查。
  • 使用默认的服务器设置。

集成测试工具:

  • ab
  • http_load
  • jmeter

单组件式测试工具:

  • mysqlslap
  • sysbench
  • database test suite
  • mysql benchmark suite(sql-bench)
  • super smack

mysql 有一个很方便的benchmark()函数,可以测试某种具体数据库操作的执行效率,

可以为函数指定一个测试循环次数和被测试的表达式。表达式可以 是任何标量表达式,例如,一个标题子积善余庆或函数。对于比较某些操作的处理性能,这个函数是很方便

的,例如可以用它来评估md5()函数是否比sha1()函数快:

mysql>set @input := 'hello world';

mysql>select benchmark(1000000,md5(@input));

+---------------------------------------+

| benchmark(1000000,md5(@input))  |

+---------------------------------------+

|                                                 0 |

+---------------------------------------+

1 row in set (2.78 sec)

mysql>select benchmark(1000000,sha1(@input));

+---------------------------------------+

|  benchmark(1000000,sha1(@input)) |

+---------------------------------------+

|                                                  0|

+---------------------------------------+

1 row in set (3.50 sec)

 

函数的返回值永远是0;可以用它获得客户应用在执行查询时的不同计时结果。

虽然benchmark()使用很方便但一般不使用它来完成一种实际的基准测试。因为它很难

合计出真正要测试的结果。它也中能很狭隘地用于整体测试过程中的一小部分。

。。先写到这。