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. 8.AOP全自动

    CGLIB字节码增强 l没有接口,只有实现类. 采用字节码增强框架 cglib,在运行时 创建目标类的子类,从而对目标类进行增强. 导入jar包: 自己导包(了解): 核心:hibernate-dis ...

  2. 装Office时,安装程序找不到Office.zh-cn\OfficeMUI问题

    运行Office 2007安装程序,没想到安装并不顺利,竟然在开始安装时就提示:"找不到Office.zh-cn\OfficeMUI.xml",而文件却是完整存在的,怎么回事? 原 ...

  3. ZKWeb网页框架1.7正式发布

    1.7.0更新的内容有 更新项目格式到新的csproj 更新项目模板 打开新创建的Asp.Net Core项目将需要VS 2017,Asp.Net和Owin项目仍可以用VS 2015 补上插件模板的P ...

  4. linux配置防火墙和重启防火墙

    1.在linux系统里面找到并打开编辑配置防火墙的文件,执行命令: vi /etc/sysconfig/iptables. 2.在上面打开的文件里面加入一下语句: -A INPUT -m state ...

  5. java 浅谈web系统当中的cookie和session会话机制

    一 Cookie: 1. Cookie翻译为小甜饼,有一种特殊的味道.cookie主要用来在(浏览器)客户端做记号用的.Cookie不属于java,Cookie是一种通用的机制,属于HTTP协议的一部 ...

  6. 【LeetCode】7. 整数反转

    题目 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1:输入: 123 输出: 321  示例 2:输入: -123 输出: -321 示例 3:输入: 120 输出 ...

  7. PCA历程详细python代码(原创)

    #PCA主成分分析,原文为文末的链接,代码为自己亲自手码 def cov_out1(dx,dy): #第一步:求解x,y各自的均值 mean_x=0 mean_y=0 for i in range(l ...

  8. curl: (7) Failed connect to 172.16.100.199:9200; 没有到主机的路由

    没有到主机的路由这种问题很常见,多数是由机器的防火墙没有关闭. Ubuntu 查看防火墙状态 ufw status 关闭防火墙 ufw disable centos6 查看防火墙状态 service ...

  9. Oracle 插入时间时 报错:ORA-01861: 文字与格式字符串不匹配 的解决办法

    一.写sql的方式插入到Oracle中 往oracle中插入时间  '2007-12-28 10:07:24'如果直接按照字符串方式,或者,直接使用to_date('2007-12-28 10:07: ...

  10. 线程的中断(Lock与synchronized)

    Thread包含interrupt()方法,因此你可以终止被阻塞的任务,这个方法将设置线程的中断状态.如果一个线程已经被阻塞,或者试图执行一个阻塞操作.那么设置这个线程的中断状态将 抛出Interru ...