数据库优化-基准測试(一)

数据库优化-基准測试(一)

大家好,又见面了,我是全栈君。

基准測试的目的

基准測试是为了找出系统的瓶颈,包含:

  • 硬件
    磁盘、内存、网络等。

  • 操作系统
    文件系统、内存管理、驱动、调度等。
  • RDBMS
    SQL层、存储引擎层。
  • Schema设计
    索引、表结构、数据类型。
  • Query
    Query写的不好、逻辑错误。
  • 应用程序问题
  • 系统各部分之间的交互
    磁盘IO、RAM、RDBMS等。
  • 測量值
    怎样測量?哪里最花时间?哪个组件最忙?
  • 找出造成瓶颈的原因

系统測试计划的需求

  • 选择正确的硬件和软件 ;
  • 理解系统的行为 ;
  • 理解系统的性能 。
  • 对系统做正确调优和配置 ;
  • 识别系统的优缺点 ;
  • 定位系统的薄弱点 ;
  • 计划未来的增长量 ;
  • 计划可能发生的特殊事件 ;
  • 理解系统的伸缩性。

哪些要做基准測试?

  • 完整測试
    • 对全部的基础设施做測试,Webserver、应用程序、缓存层、数据库、网络、外部资源等;
    • 这样的方法提供了一个完整的全貌,但非常难以实现;
    • 结果复杂难以理解。有可能会误导。

  • 单个组件
    • 只基准測试基础设施的单个组件;
    • easy实现。但可能会忽略真正的瓶颈。
    • 结果easy理解。

单个组件的基准測试的比較须要考虑OS配置、硬件、DB系统、參数、Schema、查询及工作负载。

基准測试计划指南

  1. 定义基准前的目标。
  2. 了解可反复生成的工作负载;
  3. 记录全部的信息,甚至看起来可能没实用的。包含硬件信息、配置、版本号、表大小等;
  4. 创建基线。每个基准。都是未来的基线。
  5. 定义基准測试后的目标;
  6. 仅在同一时间改动一个配置,并返回基准结果。

基准測试的类型

  • 性能測试类型
    • 压力測试
    • 负载測试
    • 耐久性測试
    • 峰值測试
  • 压力測试
    測试系统的极限。包含
    • 使用极限负载
    • 定义上限
    • 定义容量
  • 负载測试
    測试系统可承受的负载。包含:
    • 用户数量
    • 事务数量
    • 数据库大小
  • 耐久性測试
    和负载測试相似,仿真可持续的时间,在较长的时间段内測试系统的稳定性。
  • 峰值測试
    • 測试工作负载的突然变化;
    • 定义在当前环境下的系统行为。比如:
      • 不影响系统的情况下处理峰值;
      • 性能将会减少;
      • 系统将停止/失败/崩溃。

性能測试的目的

  • 在基准測试前必须规划;
  • 验证系统是否满足规定的标准;
  • 比較两个系统;
  • 隔离系统中性能差的组件。
  • 高吞吐量;
  • 低延迟;
  • 面对伸缩时的稳定性;
  • 面对并发时的稳定性。

吞吐量

  • 是广泛使用的測量值,指的是单位时间(秒或分钟)内成功的事务数量;
  • 通常只关注平均值;
  • 广泛用于市场上的比較;
  • 对压力測试非常重要。

延迟

  • 完毕一个事务所需的总时间;
  • 最小/平均/最大响应时间。
  • 对负载測试非常重要。

面对伸缩时的稳定性

  • 測量系统伸缩时的表现。
  • 在成为严重问题前发现薄弱点;
  • 对容量规划非常实用;
  • 经常使用于耐久性測试。

面对并发时的稳定性

  • 測量线程数或连接数改变时系统的表现;
  • 用于找出线程数量的上限,并引入队列;
  • 经常使用于峰值測试。

參考:《Understanding Performance through Measurement, Benchmarking and Profiling》

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115477.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Atom + activate-power-mode 关闭屏震

    Atom + activate-power-mode 关闭屏震点击SelectPlugin  去掉第一个的勾选就可以了

    2022年7月14日
    15
  • 深入浅出地理解机器人手眼标定

    深入浅出地理解机器人手眼标定所谓手眼系统,就是人眼镜看到一个东西的时候要让手去抓取,就需要大脑知道眼镜和手的坐标关系。如果把大脑比作B,把眼睛比作A,把手比作C,如果A和B的关系知道,B和C的关系知道,那么C和A的关系就知道了,也就是手和眼的坐标关系也就知道了。相机知道的是像素坐标,机械手是空间坐标系,所以手眼标定就是得到像素坐标系和空间机械手坐标系的坐标转化关系。在实际控制中,相机检测到目标在图像中的像素位置…

    2022年6月12日
    42
  • python lambda表达式详解

    python lambda表达式详解@pythonlambda表达式详解1、lambda简介先来看一段代码示例:第一行是lambda声明,x,y相当于传入的参数,整个函数会返回x+y的值。lambda作为一个表达式,定义了一个匿名函数,上例的代码x,y为入口参数,x+y为函数体。在这里lambda简化了函数定义的书写形式。python允许用lambda关键字创造匿名函数。匿名是不需要以标准的方式来声明,比如说使用def…

    2022年10月18日
    2
  • qt中Qtcpserver服务端_qt websocket

    qt中Qtcpserver服务端_qt websocket0.前言本文主要讲解QtTCP相关接口的基本应用,一些实践相关的后面会单独写。TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。TCP通过三次握手来建立可靠的连接。TCP四次挥手断开连接。TCP连接是双向的,在四次挥手中,前两次挥手用于断开一个方向的连接,后两次挥手用于断开另一方向的连接。TCP知识参考:https://blog.csdn.net/sinat_36

    2025年10月17日
    8
  • ER图详解及实例_er图例子

    ER图详解及实例_er图例子文章目录ER图基本概念ER图实例ER图基本概念ER图分为实体、属性、关系三个核心部分。在ER图中,实体是长方形,属性是椭圆形,关系为菱形。实体(entity):即数据模型中的数据对象(即数据表),用长方体来表示,每个实体都有自己的实体成员(entitymember)或者说实体对象(entityinstance),例如学生实体里包括张三、李四等。实体还会细分为弱实体和复合实体,一个实体…

    2022年9月2日
    4
  • 电阻色环表色环电阻识别表_电阻的色环识别方法

    电阻色环表色环电阻识别表_电阻的色环识别方法色环电阻色环电阻是电子电路中最常用的电子元件,色环电阻就是在普通的电阻封装上涂上不一样的颜色的色环,用来区分电阻的阻值。保证在安装电阻时不管从什么方向来安装,都可以清楚的读出它的阻值。色环电阻的基本单位有:欧姆(Ω)、千欧(KΩ)、兆欧(MΩ)。1兆欧(MΩ)=1000千欧(KΩ)=1000000欧(Ω)。平常使用的色环电阻可以分为四环和五环,通常用四环。其中四环电阻前二环为数字,第三环表

    2025年6月11日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号