zoukankan      html  css  js  c++  java
  • 数据库优化-基准測试(一)

    基准測试的目的

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

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

    • 操作系统
      文件系统、内存管理、驱动、调度等。
    • 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》

  • 相关阅读:
    有关.net 框架的学习笔记
    简单定义工程架构
    respondsToSelector的相关使用
    IOS框架和服务
    iOS常用第三方类库
    ios换肤思想,及工具类
    集成激光推送
    远程推送
    ios本地推送
    UIPopoverController 的使用
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5351975.html
Copyright © 2011-2022 走看看