当前位置: 首页 > article >正文

2、Mysql基准测试

准测试是针对系统设计的一种压力测试。通常的目标是为了掌握系统的行为。


为什么需要基准测试

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

  • 验证基于系统的一些假设,确认这些假设是否符合实际情况
  • 重现系统中的某些异常行为,以解决这些异常
  • 测试系统当前的运行情况
  • 模拟比当前系统更高的负载,以找出系统随着压力增加而可能遇到的扩展性瓶颈
  • 规划未来业务增长
  • 测试应用适应可变环境的能力
  • 测试不同的硬件、软件和操作系统配置
  • 证明新采购的设备是否配置正确

基准测试的一个主要问题在于其不是真实的压力测试,基准测试施加给系统的压力相对真实压力来说比较简单。真实压力是不可预期而且变化多端的,有时候情况会过于复杂而难以解释。

基准测试的策略

基准测试有两种主要的策略:一是针对整个系统的整体测试,另外是单独测试Mysql。这两种策略也被称为集成式以及单组件式基准测试。
进行集成式测试的原因主要是:

  • 测试整个应用系统包括Web服务器,代码,网络和数据库是非常有用的,因为用户关注的是整体的应用而不是数据库
  • Mysql并不总是应用的瓶颈
  • 只有对应用做整体测试,才能发现各个部分之间的缓存带来的影响
  • 整体应用的集成式测试更能揭示应用的真实表现,而单独组件的测试很难做到这一点

另外整体基准测试很难建立,如果测试的设计有问题,那么结果就无法反映真实的情况。不过在项目初期可以选择只关注Mysql的性能做单独测试。

测试指标

  • 吞吐量:单位时间内的事务处理数
  • 响应时间或者延迟:用于测试任务所需的整体时间
  • 并发性
  • 可扩展性

基准测试方法

如何避免一些常见的错误:

  • 使用真实数据的子集而不是全集
  • 使用错误的数据分布
  • 使用不真实的分布参数
  • 在多用户场景中只做单用户测试
  • 在单服务器上测试分布式应用
  • 与真实用户行为不匹配
  • 反复执行同一个查询
  • 没有检查错误
  • 忽略了系统预热
  • 使用默认的服务器配置
  • 测试时间太短

设计和规划基准测试

规划基准测试的第一步就是提出问题并明确目标,然后决定是采用标准的基准测试还是设计专用的测试。

基准测试应该运行多长时间

基准测试应该运行足够长的时间,这一点很重要。如果需要测试系统在稳定状态时的性能,那么当然需要再稳定状态下测试并观察。而如果系统有大量的数据和内存,要达到稳定状态可能需要非常长的时间。
有时候无法确定测试需要运行多长时间,可以先一直运行持续观察直到确认系统已经稳定。

获取系统性能和状态

在执行基准测试时,需要尽可能多地收集被测试系统的信息。包括系统状态和性能指标,如CPU使用率,磁盘IO等等。

获得准确的测试结果

运行基准测试并分析结果

基准测试工具

集成式测试工具

ab

ab是Apache Http服务器基准测试工具。他可以测试HTTP服务器每秒最多可以处理多少请求。如果测试的是Web应用服务,这个结果可以转换成整个应用每秒可以满足多少请求。。

http_load

这个工具概念上和ab类似,也被设计为对Web服务器进行测试,但比ab更加灵活。

JMeter

JMeter是一个java应用程序,可以加载其他应用并测试其性能。虽然是设计用来测试Web应用的,但是也可以用于测试其他FTP服务器,或者通过JDBC进行数据库查询测试。

单组件式测试工具

mysqlslap

Mysql Benchmark Suite

Super Smack

Database Test Suite

Percona’s TPCC-Mysql Tool

sysbench


http://www.kler.cn/a/146592.html

相关文章:

  • 工作记录小点
  • 《AI创造力的边界与机器人技术的现实困境:一个双重视角的探讨》
  • 总结SpringBoot项目中读取resource目录下的文件多种方法
  • 【Vim Masterclass 笔记11】S06L24 + L25:Vim 文本的插入、变更、替换与连接操作同步练习(含点评课)
  • 【大模型系列篇】数字人音唇同步模型——腾讯开源MuseTalk
  • 音视频入门基础:RTP专题(1)——RTP官方文档下载
  • ubuntu20.04配置OpenCV的C++环境
  • 3.前端--HTML标签-文本图像链接【2023.11.25】
  • docker环境日志常用命令
  • AI数字人与虚拟人:区别与应用场景
  • 【机器学习】聚类(二):原型聚类:LVQ聚类(学习向量量化)
  • 新材料制造ERP用哪个好?企业应当如何挑选适用的
  • 基于YOLOv5的视频计数 — 汽车计数实现
  • 论文阅读——MCAN(cvpr2019)
  • Python多线程使用(一)
  • S32K3之看门狗(autosar框架中的watchdog)
  • Redis链表使用
  • 【Web安全】sql注入绕过技法
  • 探索 Vue 中的 bus.$emit:实现组件通信的强大工具
  • c#处理SQLSERVER 中image数量类型为空
  • actual combat 23 —— 通过序列化对字典字段生成字典str字段和对应字典标签值
  • JVM基础篇:垃圾回收
  • 十大排序算法中的插入排序和希尔排序
  • 【UE5】五大基类及其使用
  • 新闻研究导刊杂志社新闻研究导刊杂志新闻研究导刊编辑部2023年第21期目录
  • 第7章-使用统计方法进行变量有效性测试-7.3-列联表分析与卡方检验