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

基准測试的目的

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

  • 硬件

    磁盘、内存、网络等。

  • 操作系统

    文件系统、内存管理、驱动、调度等。

  • 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》

时间: 2024-10-07 20:38:47

数据库优化-基准測试(一)的相关文章

LINPACK測试

1简单介绍 LINPACK是线性系统软件包(Linear system package) 的缩写. Linpack如今在国际上已经成为最流行的用于測试高性能计算机系统浮点性能的benchmark.通过利用高性能计算机.用高斯消元法求解一元N次稠密线性代数方程组的測试.评价高性能计算机的浮点性能. Linpack測试包含三类,Linpack100.Linpack1000和HPL. Linpack100求解规模为100阶的稠密线性代数方程组.它仅仅同意採用编译优化选项进行优化.不得更改代码,甚至代码

Bandwidth内存带宽測试工具

本博文为原创,遵循CC3.0协议,转载请注明出处:http://blog.csdn.net/lux_veritas/article/details/24766015 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------

JMeter使用记录1 -- JDBC測试

场景:使用jmeter对web应用和mysql数据库进行压力測试 JMeter是一款很强大的測试工具.能够用来測试web,数据库.从07年用过之后一直对它情有独钟,以下记录下在一个项目中对它的简单使用. 项目分数据库測试和web应用測试 数据库測试比較简单.将要測试的数据库的jdbc driver放到jmeter的lib目录,新建线程组,配置起100线程,循环10次,10秒启动全部线程,增加一个jdbc connection configuration,增加要进行的CRUD操作.点击启动butt

H264编码器性能測试

版本号:0.1.0-beta 作者:石硕 更新:2014-04-13 15:54:08 ============================================================ 现在.H264已经成为视频行业的标准规范.企业中使用比較多的当数X264,开源,资源消耗又比較少. 首先,介绍一下常见的三大开源H264编码器:JM.X264.T264 JM H264的官方測试源代码,实现了264的全部特性,但程序结构冗长,编码复杂度高,不推荐商业应用. X264 摈弃了

JNI/NDK开发指南(九)——JNI调用性能測试及优化

转载请注明出处:http://blog.csdn.net/xyang81/article/details/44279725 在前面几章我们学习到了.在Java中声明一个native方法,然后生成本地接口的函数原型声明.再用C/C++实现这些函数,并生成相应平台的动态共享库放到Java程序的类路径下.最后在Java程序中调用声明的native方法就间接的调用到了C/C++编写的函数了.在C/C++中写的程序能够避开JVM的内存开销过大的限制.处理高性能的计算.调用系统服务等功能. 同一时候也学习到

sqlite3树形结构遍历效率对照測试

sqlite3树形结构遍历效率对照測试 一.缘起 项目数据结构:本人从事安防行业,视频监控领域.项目中会遇到监控点位的组织机构划分.暂时划分的巡逻点位等.这些相机点位.连同组织机构,它们在逻辑关系上构成了一个树形结构. 又因为不论什么一个点位属于一个组织机构,也可能属于一个被暂时创建的视频巡逻计划中,因此,能够看出,不论什么一个节点,包含相机节点和组织机构节点,都有可能有至少一个父级节点,且不论什么一个组织机构节点也会有多个下级子节点.这中逻辑关系又构成了图. 数据量规模:一个市级别的管理平台,

PAAS平台的web应用性能測试与分析

引言 为什么我会写这一篇博客,由于近期非常多京东云擎jae的用户反应一个问题就是他们部署在jae上面的应用訪问非常慢,有极少数应用甚至常常出现504超时现象.当然大家首先想到的是jae性能太差,这也是人之常情,往往出现什么错误的时候首先想到是别人的不好.工作中非常多同事也是这样,假设软件系统出现一个bug首先怀疑的肯定不是自己写的代码.今天花时间写这一篇博客主要就是告诉大家如何确定我们部署在PAAS平台(不不过JAE哦)web应用为什么慢?慢在哪儿了?有什么方法能够解决? 原因分析 出现訪问自己

软件測试培训笔记

<单元測试及持续集成实战>  201409 1.        质量(Quality):一组内在特性满足需求的程度:一个系统.构件或过程满足特定需求(顾客或用户须要或期望)的程度. 软件质量管理:确定一个软件产品的质量目标,建立实现这些目标的计划.监督.调整软件计划.软件工作产品.活动和质量目标,以满足顾客.终于用户须要和期望的过程. 一般在软件企业中,提到质量管理(quality management, QM)主要是两个方面:质量控制(qualitycontrol, QC).质量保证(qua

mysql数据库优化之表的设计和慢查询定位

一.数据库优化包含的方面 数据库优化是一种综合性的技术.并非通过某一种方式让数据库效率提高非常多.而是通过多方面的提高.从而使得数据库性能提高. 主要包含: 1.表的设计合理化(3范式) 2.给表加入合适的索引.怎样使用索引 3.分表技术(水平切割.垂直切割) 4.定时清除数据垃圾,定时碎片整理 5.多用存储过程和触发器 6.对mysql配置进行优化 7.读写分离 8.mysqlserver硬件升级. 二.数据库的设计 步骤: 1.收集信息:与该系统有关人员进行交流.充分了解数据库须要完毕的任务