高性能MySQL:为什么需要基准测试

 我来答
世纪网络17
2022-10-18 · TA获得超过5944个赞
知道小有建树答主
回答量:2426
采纳率:100%
帮助的人:141万
展开全部

   第 章 MySQL基准测试

  基准测试(benchmark)是MySQL 新手和专家都需要掌握的一项基本技能 简单地说 基准测试是针对系统设计的一种压力测试 通常的目标是为了掌握系统的行为 但也有其他原因 如重现某个系统状态 或者是做新硬件的可靠性测试 本章将讨论MySQL 和基于MySQL 的应用的基准测试的重要性 策略和工具 我们将特别讨论一下sy *** ench 这是一款非常优秀的MySQL 基准测试工具

   为什么需要基准测试

  为什么基准测试很重要?因为基准测试是唯一方便有山亏腔效的 可以学习系统在给定的工作负载下会发生什么的方法 基准测试可以观察系统在不同压力下的行为 评估系统的容量 掌握哪些是重要的变化 或者观察系统如何处理不同的数据 基准测试可以在系统实际负载之外创造一些虚构场景进行测试 基准测试可以完成以下工作 或者更多

  验证基于系统的y一些假设 确认这些假设是否符合实际情况

  重现系统中的某些异常行为 以解决这些异常

  测试系统当前的运行情况 如果不清楚系统当前的性能 就无法确认某些优化的效果如何 也可以利用历史的基准测试结果来分析诊断一些无法预测的问题

  模拟比当前系统更高的负载 以找出系统随着压力增加而可能遇到的扩展性瓶颈

  规划未来的业务增长 基准测试可以评估在项目未来的负载下 需要什么样的硬件 需要多大容量的网络 以及其他相关资源 这有助于降低系统升级和重大变更的风险

  测试应用适应可变环境的能力 例如 通过基准测试 可以发现系统在随机的并发峰值下的性能表现 或者是不同配置的服务器之间的性能表现 基准测试也可以测试系统对不同数据分布的处理能力

  测试不同的硬件 软件和操作系统配置 比如RAID y 还是RAID 更适合当前的系统?如果系统从ATA 硬盘升级到SAN 存储 对于随机写性能有什么帮助? Linux 系列的内核会比 系列的可扩展性更好吗?升级MySQL 的版本能改善性能吗?为当前的数据采用不同的存储引擎会有什么效果?所有这类问题都可以通过专门的基准测试来获得答案

  证明新采购的设备是否配置正确 笔者曾经无数次地通过基准测试来对新系统进行压测 发现了很多错误的配置 以及硬件组件的失效等问题 因此在新系统正式上线到生产环境之前进行基准测试是一个好习惯 永远不要相信主机提供商或者硬件供应商的所谓系统已经安装好 并且能运行多快的说法 如果可能 执行实际的基准测试永远是一个好主意

  基准测试还可以用于其他目的 比如为应用创建单元测试套件 但本章我们只关注与性能有关的基准测试

  基准测试的一个主要问题在于其不是真实压力的测试 基准测试施加给系统的压力相对真实压力来说 通常比较简单 真实压力是不可预期而且变化多端的 有时候情况会过于复杂而难以解释 所以使用真实压力测试 可能难以从结果中分析出确切的结论

  基准测试的压力和真实压力在哪些方面不同?有很多因素会影响基准测试 比如数据量 数据和查询的分布 但最重要的一点还是基准测试通常要求尽可能快地执行完成 所以经常给系统造成过大的压力 在很多案例中 我们都会调整给测试工具的最大压力 以在系统可以容忍的压力阈值内尽可能快地执行测试 这对于确定系统的最大容量非常有帮助 然而大部分压力测试工具不支持对压力进行复杂的控制 务必要记住 测试工具自身的局限也会影响到结果的有效性

  使用基准测试进行容量规划也要掌握技巧 不能只根据测试结果做简单的推断 例如 假设想知道使用新数据库服务器后 系统能够支撑多大的业务增长 首先对原系统进行基准测试 然后对新系统做测试 结果发现新系统可以支持原系统 倍的TPS(每秒事务数) 这时候就不能简单地推断说新系统一定可以支持 倍的业务增长 这是因为在业务增长的同时 系统的流量 用户 数据以及不同数据之间的交互都在增长 它们不可能都有 倍的支撑能力 尤其是相互之间的关系 而且当业务增长到 倍时 应用本身的设计也可能已经随之改变 可能有更多的新特性会上线 其中某些特性可能对数据库造成的压力远大于原有功能 而这些压力 数据 关系和特性的空搏变化都很难模拟 所以它们对系逗衫统的影响也很难评估

  结论就是 我们只能进行大概的测试 来确定系统大致的余量有多少 当然也可以做一些真实压力测试(和基准测试有区别) 但在构造数据集和压力的时候要特别小心 而且这样就不再是基准测试了 基准测试要尽量简单直接 结果之间容易相互比较 成本低且易于执行 尽管有诸多限制 基准测试还是非常有用的(只要搞清楚测试的原理 并且了解如何分析结果所代表的意义)

       返回目录 高性能MySQL

       编辑推荐

       ASP NET开发培训视频教程

  数据仓库与数据挖掘培训视频教程

lishixinzhi/Article/program/MySQL/201311/29743

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
北京新国信
2023-07-11 广告
性能测试和功能测试是软件测试的两个重要方面。1. 功能测试:主要是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。也可以称为黑盒测试,只需要考虑测试各个功能是否实现,例如游戏的功能测试,首先测试游戏的各个... 点击进入详情页
本回答由北京新国信提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式