数据库基准测试中应该避免的错误

Posted pengxiaozhi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库基准测试中应该避免的错误相关的知识,希望对你有一定的参考价值。

基准测试可以说是唯一方便有效的、可以学习系统在给定工作负载下会发生什么的方法。可见基准测试的重要性,在设计基准测试前,我们要了解一下基准测试的常见错误,防止自己在测试中犯这些错误。

数据库基准测试中常见错误:

  • 使用真实数据的子集而不是全集:例如真实情况下,应用需要处理100G的数据,然而在测试时,只有1G数据;或者只使用当前数据进行测试,却希望模拟未来业务大幅增长后的情况。
  • 使用错误的数据分布:例如使用均匀分布的数据测试,而系统真实数据有很多热点区域(随机生成的测试数据通常无法模拟真实的数据分布)
  • 使用不真实的分布参数:例如假定所有用户的个人信息都会被平均地读取。
  • 在多用户场景下,只做单用户测试。
  • 在单服务器上测试分布式应用。
  • 与真实用户行为不匹配。例如Web页面中的“思考时间”。真实用户在请求到一个页面后,会阅读一段时间,而不是不停顿的一个接一个点击相关链接。
  • 反复执行同一个查询。真实的查询都是不尽相同的,这可能会导致缓存命中率降低。而反复执行同一个查询在某种程度上,会全部或者部分缓存结果。
  • 没有检查错误:如果测试的结果无法得到合理的解释,比如一个本应很慢的查询突然变快了,就应该检查是否有错误产生。否则可能只是测试了mysql检测语法错误的速度了。基准测试完成后,一定要检查一下错误日志,这应该时基本要求。
  • 忽略了系统预热(warm up)的过程。例如系统重启后马上进行测试。有时候需要了解系统重启需要多长时间才能达到正常的性能容量,要特别留意预热的时长。反过来说,如果要想分析正常的性能,需要注意,若基准测试在重启后马上启动,则缓存时冷的,还没有数据,这时即使测试的压力相同,得到的结果也和缓存已经装满数据时时不同的。
  • 使用默认的服务器配置
  • 测试时间太短。基准测试需要持续一段时间。

以上是关于数据库基准测试中应该避免的错误的主要内容,如果未能解决你的问题,请参考以下文章

避免在 timeit.repeat() 基准测试中进行昂贵的设置

如何对 Matlab 流程进行基准测试?

Go中的单元测试和基准测试

我应该如何解释 Apache 的 ab 基准测试工具的结果?

MySQL基准测试--方法

如何在 Java 中编写正确的微基准测试?