MySQL基准测试(一)--原因,策略,思路

运用benchmark的原因

  • 验证一些你认为的问题,通过基准测试和模拟数据来验证。
  • 解决生产系统的一些异常
  • 测试系统的当前的运行情况,通过历史的基准测试结果分析。
  • 模拟更高的负载,发现一些“天花板”等瓶颈问题
  • 规划的未来业务增长。通过基准测试评估,来规划硬件,网络,其他资源。保证生产环境的稳定运行。
  • 测试应用在高并发情况下(高峰值)的性能表现。(这里不仅对数据库,对网络,存储,tomcat等web应用同样适用)
  • 测试不同的硬件,操作系统。
  • 测试采购的设备的配置参数是否正确。

运用benchmark的策略

  • 测试整个应用环境:包括Web服务器,应用代码,网路,数据库等。不仅仅是数据库,而应该是对于整个应用的性能,因为用户关注的是页面的响应时间,对于整个网站的感官速度,而不是数据库本身。甚至用户都不懂数据库为何物
  • MySQL数据库并不是应用的唯一瓶颈:当数据库的load和慢查询以及参数各个方面都ok的时候,我们应该去梳理整个架构。从应用层开始从上倒下的梳理,比只看数据库的单方面来的性能优化的效益更高。

针对数据库

  • 比较不同的schema或查询的性能。(可以在不同的硬件环境,不同的操作系统,不同的数据库版本下测试,不同的mysql参数配置)
  • 针对某个应用问题反映的性能问题,做基准测试
  • 针对某个场景(高峰),做一个短期的基准测试,周期性的(每隔一天,每隔三天,或者每隔一周)不同时间段的基准测试。来分析问题。

运用benchmark的需分析的指标

  • 吞吐量
    吞吐量指的是单位时间内的事务处理数。常用的单位指标每秒事务数(TPS),每分钟事务数(TPM)。
  • 响应时间
    测试单位任务所需的时间。例如一个具体的应用,测试某一个页面的响应时间。并且通过一个百分比响应时间(percentile response time)来代替。例如:访问某一个具体应用的某一个页面的95%的时间都是20ms,那么这个页面的响应时间可以说是在20ms内响应完成。
  • 并发性
    这个并发性是一个具有迷惑性的指标,例如多少用户在同一个时间访问一个web站点,并不代表具有多少并发请求,因为HTTP是无状态的,很多人访问的只是web站点的静态页面。并不等于web服务器的请求。而且,web服务器的请求也不等同于数据库的并发请求。
    因此,到数据库并发请求的时候,并发请求已经少之又少了。一个代码设计良好的应用程序,应该是一个web站点同一时间有10万用户访问,却只可能有30~50个数据库的并发请求。
  • 可扩展性
    当应用系统的遇到业务压力的时候,系统有可扩展性是必须的。例如:tomcat等此类web应用能不能扩展,具有负载均衡的能力。数据库是否有可扩展性,分担读请求的负载能力。因为当吞吐量和性能不能纵向扩展的话。就必须从横向扩展,增加吞吐量。提供整个架构的性能。

而何时需要扩展?何时遇到瓶颈?那么收集生产环境上的状态指标就非常有必要,包括web应用和数据库等状态指标。来分析遇到了哪些瓶颈?

运用benchmark的思路

收集 -->分析 -->决策 -->优化

  • 收集 收集尽可能多的生产环境的状态数据。基于客观事实做出来的优化,总比凭着经验更为靠谱。有时候经验做出来的决策其实会更危险。
  • 分析 基准测试收集来的数据,不管使用何种工具,都需要人的眼睛基于客观的数据做出分析,需要做哪些方面的优化。
  • 决策 分析出来的结果,例如:数据库的参数需要调整,数据库的SQL或者索引需要优化,数据库的schema需要优化,需要加一个cache层。以及硬件,网络,存储需要优化等等。在例如应用层面或者代码。这些需要沟通的,以最小的代价获得最高性能的提升。需要团队大家一起沟通而不是单方面的决定。
  • 优化 以10%的成本来获得40%的性能优化。这个有取舍。例如:本来需要修改表结构亦或者添加索引,得到一个数据库的性能增进。又发现数据库的参数未优化。通过调整一些参数来提高数据库的性能。后面发现这是一个中小型的网站,有一定的维护停机时间可行性。通过分析,决定修改参数配置重启数据库,只有10s左右的停机时间,获得更好的数据库性能。而不需要修改现有的表结构。这是一个平衡的调整。

MySQL基准测试(一)--原因,策略,思路的更多相关文章

  1. 详解MySQL基准测试和sysbench工具

    前言 作为一名后台开发,对数据库进行基准测试,以掌握数据库的性能情况是非常必要的.本文介绍了MySQL基准测试的基本概念,以及使用sysbench对MySQL进行基准测试的详细方法. 文章有疏漏之处, ...

  2. 详解MySQL基准测试和sysbench工具(转)

    前言 作为一名后台开发,对数据库进行基准测试,以掌握数据库的性能情况是非常必要的.本文介绍了MySQL基准测试的基本概念,以及使用sysbench对MySQL进行基准测试的详细方法. 文章有疏漏之处, ...

  3. 解MySQL基准测试和sysbench工具

    前言 作为一名后台开发,对数据库进行基准测试,以掌握数据库的性能情况是非常必要的.本文介绍了MySQL基准测试的基本概念,以及使用sysbench对MySQL进行基准测试的详细方法. 文章有疏漏之处, ...

  4. 【转载】秒杀场景下MySQL的低效原因和改进以及Redis的处理

    分享的PPT在如下网址: http://www.doc88.com/p-4199037770087.html 秒杀场景下mysql的低效原因和改进 另外有一个篇文章是针对以上内容的总结: http:/ ...

  5. MySQL 基准测试

    这是<高性能 MySQL(第三版)>第二章的读书笔记. 基准测试(benchmark)是针对系统的压力测试,用于掌握系统行为或重新系统的某个状态.sysbench 是常用的 MySQL 基 ...

  6. Mysql基准测试详细解说(根据慕课网:《打造扛得住Mysql数据库架构》视频课程实时笔录)

    什么是基准测试 基准测试是一种测量和评估软件性能指标的活动用于建立某个时刻的性能基准,以便当系统发生软硬件变化时重新进行基准测试以及评估变化对性能的影响. 我们可以这样认为:基准测试是针对系统设置的一 ...

  7. mysql 30大优化策略

    mysql 30大优化策略 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 wher ...

  8. 【mysql】mysql基准测试

    基准测试定义 基准测试其实是一种测量和评估软件性能指标的方法,用于建立某个时间点的性能基准,以便当系统的软硬件发生变化的时候重新进行基准测试以评估变化对性能的影响.所以对系统性能的测量,才能知道我们的 ...

  9. MySQL数据库服务器整体规划(思路与步骤)

    MySQL数据库服务器整体规划(思路与步骤) 参考资料: http://blog.51cto.com/zhilight/1630611 我们在搭建MySQL数据库服务器的开始阶段就合理的规划,可以避免 ...

随机推荐

  1. linux 查看信息-系统&资源

    系统 1.查看内核/操作系统/CPU信息 2.查看操作系统版本 3.查看CPU信息 4.查看计算机名 5.列出所有PCI设备 6.列出所有的USB设备 7.列出加载的内核模块 8.查看环境变量 资源 ...

  2. CDH版本的hadoop下载

    http://archive.cloudera.com/cdh5/cdh/5/加要下载的cdh版本插件 例如: http://archive.cloudera.com/cdh5/cdh/5/zooke ...

  3. [uboot] (第三章)uboot流程——uboot-spl代码流程

    http://blog.csdn.net/ooonebook/article/details/52957395 以下例子都以project X项目tiny210(s5pv210平台,armv7架构)为 ...

  4. (钉钉)第三方WEB网站扫码登录

    年底在做钉钉和公司的知识库产品的对接,怎么使用钉钉api的如下: 第一步: 登录:https://oa.dingtalk.com/#/welcome 这点可以自己建立一个企业账号进行测试 点击工作台建 ...

  5. MyBatis 源码分析 - 配置文件解析过程

    * 本文速览 由于本篇文章篇幅比较大,所以这里拿出一节对本文进行快速概括.本篇文章对 MyBatis 配置文件中常用配置的解析过程进行了较为详细的介绍和分析,包括但不限于settings,typeAl ...

  6. Servlet案例5:用户登录失败信息回显

    登录失败信息回显不会的新的一个页面,而是显示在登录页面 一种方法是: 登录页面表单中每个字段后添加<span>标签写入失败信息,利用ajax技术 通过改变<span>标签的di ...

  7. Linux 进程一直占用单核CPU分析

    pidstat 1信息

  8. D3.js的一些基础部分 (v3版本)

    最近公司有需求要做一些可视化的功能.之前一直都是用Echarts做的,但是Echarts难以满足我们的需求,经过多方请教,查找发现D3可以满足我们的需求.第一次接触到D3,发现这些图标的可交互性非常丰 ...

  9. vue项目打包上线时的配置操作

    vue的图片路径,和背景图片路径打包后错误解决 2017-12-11 16:00 by muamaker, 7037 阅读, 0 评论, 收藏, 编辑 最近在研究vue,老实的按照官网提供的,搭建的了 ...

  10. 30 个java编程技巧

    1.return 一个空的集合,而不是 null 如果一个程序返回一个没有任何值的集合,请确保一个空集合返回,而不是空元素.这样你就不用去写一大堆 ”if else” 判断null元素. Java 的 ...