3.服务器性能剖析3.1 性能优化简介性能即响应时间。数据库服务器的性能用查询的响应时间来度量,单位是每个查询花费的时间。什么是优化?假设性能优化是在工作负载一定的情况下,尽可能的降低响应时间。很多人对此很迷茫,认为性能优化是降低 CPU 利用率的,但这是一个陷阱,资源是用来消耗并用来工作的。所以如果目标是降低响应时间,那么就需要理解为什么服务器执行查询要花费这么多时间,然后减去或者消除那些对查询结果来说不必要的工作。也就是说,先要搞清楚时间花费在哪里。这就引出优化的第二个原则:无法度量就无法有效的优化。所以,第一步应该测量时间花费在哪里。很多人在优化的时候,都将精力放在修改一些东西上,却很少去进行精确的测量。完成一项任务所需要的时间可以分为2部分: 1.执行时间 : 如果要优化任务的执行时间,最好的办法是通过测量定位不同的子任务花费的时间,然后优化掉一些子任务,降低子任务的执行频率或者提升子任务的效率。2.等待时间 :而优化等待时间相对复杂一些,因为等待有可能是由其他系统间接影响而导致的,任务之间也可能由于争用磁盘或者CPU资源而互相影响。性能剖析一般有2个步骤:测量任务所花费的时间;然后对结果进行统计和排序,将重要的任务排到前面。性能剖析的工具的工作方式基本相同。在任务开始时启动计时器,在任务结束时停止计时器,然后用结束时间减去启动时间得到响应时间。pt-query-digest理解性能剖析:1.值得优化的查询:一些占用总响应时间比重很小的查询不值得优化2.异常情况3.未知的未知4.被隐藏的细节3.2 对应用程序进行性能分析实际上剖析应用程序一般比剖析数据库服务器容易得多,而且回报更多。对系统进行性能剖析还是建议自上而下的进行,这样可以追踪自用户发起到服务器响应的整个过程。性能瓶颈的影响因素很多:1.外部资源,比如调用了外部的 web 服务或者搜索引擎2.应用需要处理大量的数据,比如分析一个超大的 xml 文件3.在循环中执行昂贵的操作,比如滥用正则表达式4.使用了低效的算法,比如使用暴力破解搜索算法取查找列表中的项性能分析会导致服务器变慢吗?性能剖析和定期检测都会带来额外的开销。问题在于这个开销有多少,并且由此得到的收益是否能够抵消这个开销。大多数设计和构建过高性能应用程序的人相信,应用尽可能的测量一切可以测量的地方,并且接受这些测量带来的额外的开销,这些开销应该被当成应用程序的一部分。3.2.1 测量PHP应用程序xhprof : 可以在生成环境大量部署并全天候使用,它还能针对函数调用进行剖析,并根据消耗时间进行排序。相比 xhprof,还有一些更底层的数据,比如 xdebug, Valgrind 和 cachegrind,可以从多个角度对代码进行检测。有些工具会产生大量输出,并且开销很大,并不适合在生成环境运行,但在开发环境可以发挥很大的作用。IfP : 更关注数据库的调用3.3 剖析 MySQL 查询对查询进行性能分析有2种方式:1.可以剖析整个数据库服务器,这样可以分析出哪些查询是主要的压力来源2.对查询进行单独剖析,分析哪些子任务是响应时间的主要消耗者3.3.1 剖析服务器负载服务器端的查询很有价值,因为在服务器端可以有效的审计效率低下的查询。定位和优化 '坏' 查询能够显著的提示应用的性能,也能解决特定的难题。还可以降低服务器的压力,这样所有的查询都将因为减少了对共享资源的争用而受益。降低服务器的负载也可以推迟或者避免升级更昂贵的硬件的需求。MySQL 的每一个新版本中都增加了更多的可测量点。1.捕获 MySQL 的查询到日志文件中:show variables like 'long_query_time'; // 查看慢查询long_query_time = 0 捕获所有查询在 MySQL 中慢查询日志是开销最低,精度最高的策略查询时间的工具。慢查询带来的开销几乎可以不计,更需要担心的是日志可能消耗大量的磁盘,所以需要日志轮转工具。2.pt-query-digest1.pt-query-digest --processlist 选项不断查看 show full processlist,记录查询第一次出现的时间和消失的时间2.通过抓取 tcp 包,然后根据 MySQL 的客户端/服务器通信协议进行解析。可以先通过将 tcpdump 将网络包保存到磁盘,然后使用 pt-query-digest的 --type=tcpdump 选项来分析。3.通过 mysql 代理层的脚本记录所有查询3.3.2 剖析单条查询1. show variables like 'profiling'; set profiling = 1; 开启后,在服务器上执行的所有的语句,都会测量其消耗的时间和其他一些查询执行状态的变更的数据。当一条查询提交到服务器后,此工具会记录剖析信息到一张临时表,并且给查询赋予一个从 1 开始的整数标识符。show profiles;show profile for query 1; // 具体的某个查询 id2.show status;show status 返回一些计数器。既有服务器级别的全局计数器,也有基于某个连接的会话级别的计数器。show global status; // 服务器级别的show status where variable_name like 'handler%' or variable_name like 'created%';show status 本身也会创建一个临时表.你看你会注意到通过 explain 查看查询的执行计划也可以获得大部分相同的信息,但 explain 是通过预估得到的,而通过计数器则是实际的测量结果的。explain 无法告诉你临时表是否是磁盘表,这和内存临时表的性能差别是很大的。3.3.3 使用性能剖析3.4 诊断间歇性问题3.4.1 单条查询问题还是服务器问题如果服务器上的程序都突然变慢,又突然变好,每一条查询也都变慢,那么慢查询可能不一定是原因,而是其他问题导致的结果。反过来说,如果服务器运行没有问题,只有某条查询偶尔变慢,就需要将注意力放到这条特定的查询上面。show global status : 以较高频率比如1秒执行一次 show global status 去捕获数据。show processlist : 这个方法是通过不断的捕获 show processlist 的输出,来观察是否有大量线程处于不正常的状态或者有其他不正常的特征。3.4.2 捕获诊断数据1.诊断触发器2.一个收集诊断数据的工具pt-stalk需要收集什么样的数据:系统的状态,cpu 利用率,磁盘使用率,和可用空间,ps的输出采样,内存利用率,以及可以从mysql 获得的信息。oprofilestracetcpdumpgdb   // 有入侵性,会造成服务器短暂停顿pt-collectpt-mysql-summarypt-summarypt-siftpt-pmpiostatvmstat

1.性能优化简介











2.对应用程序进行性能剖析









3.剖析 MySQL 查询






















#要查询的SQL
SET @query_id = 1;
SELECT#执行步骤STATE,#每个步骤总时间SUM(DURATION) AS Total_R,#每个步骤占用总时间比例ROUND(100 * SUM(DURATION) /(SELECT SUM(DURATION) FROM INFORMATION_SCHEMA.PROFILINGWHERE QUERY_ID = @query_id),2) AS Pct_R,#相同步骤执行次数COUNT(*) AS Calls,#相同步骤平均执行时间SUM(DURATION) / COUNT(*) AS "R/Call"
FROM INFORMATION_SCHEMA.PROFILING
WHERE QUERY_ID = @query_id
GROUP BY STATE
ORDER BY Total_R DESC;








http://janephp.blog.51cto.com/4439680/1307369/

3.高性能MySQL --- 服务器性能剖析相关推荐

  1. mysql服务器性能剖析,高性能MySQL–服务器性能剖析

    性能剖析一般有两个步骤:测量任务所花费的时间;然后对结果进行统计和排序,将重要的任务排到前面.无法测量就无法有效的优化.完成一项任务所需要的时候可以分为两部分:执行时间和等待时间. 当一个资源变得效率 ...

  2. 《高性能MySQL》——服务器性能剖析(笔记)

    文章目录 三.服务器性能剖析 3.1 性能优化简介 3.1.1 通过性能剖析进行优化 3.1.2 理解性能剖析 3.2 对应用程序进行性能剖析 3.3 剖析MySQL查询 3.3.1 剖析服务器负载 ...

  3. 高质量解读《高性能mysql》——第3章服务器性能剖析

    前言: 高效读书,一张逻辑图带你读懂.读薄书中重点. 深入学习MySQL系列,解读的目的是为了把书读薄,抽出重点进行梳理.理解.运用.因大量文字很容易让人觉得枯燥无味,为此博主花费一定精力和时间整理输 ...

  4. mysql 服务器性能,mysql服务器性能配置

    mysql服务器性能配置 内容精选 换一换 鲲鹏性能分析工具是一款针对鲲鹏平台的性能调优工具,包含系统性能分析和Java性能分析两大功能.本实践使用系统性能分析对MySQL所在服务器系统执行系统配置全 ...

  5. 《高性能MySQL》 第三章 服务器性能剖析 读书笔记

    性能优化 基于响应时间 性能剖析 测量任务所花费的时间 对结果进行统计和排序,将重要的任务排到前面 时间分类 执行时间 等待时间 理解性能剖析 值得优化的查询 一些只占总响应时间比重很小的査询是不值得 ...

  6. 性能服务器解读,【MySQL数据库】第三章解读:服务器性能剖析(上)

    前言: 保持空杯精神,使用性能剖析,专注于测量服务器的时间花费在哪里,思考1.如何确认服务器是否达到了性能最佳状态,2.某条语句为什么不够快,诊断被用户描述为"停顿.堆积.卡死"的 ...

  7. 高性能MySQL——查询性能优化

    在数据库设计中,如果查询写得很糟糕,即使库表结构设计再合理,索引再合理也无法实现高性能. 1.优化数据访问 查询性能低下最基本的原因是访问的数据太多.对于低效的查询,通过以下两步来分析总是很有效: 确 ...

  8. 高性能MySQL -- 查询性能优化

    一般来说一个好的程序:查询优化,索引优化,库表结构要同时进行优化.今天我们来讲一下查询优化. 我们需要对MySQL的架构有基本认知,所以这里贴一张图大家看看: 图片来自于<小林coding> ...

  9. 测试服务器性能常用算法,服务器性能剖析(profiling)之——简介

    性能剖析(profiling)是专注于测量服务器时间花费在哪里的一种技术,这里"性能即响应时间". 测量是一项很有挑战性的工作,并且分析结果也同样有挑战性,测出时间花在哪里,和知道 ...

  10. zabbix3.0 监控mysql服务器性能实现过程

    监控思路 先在zabbix主机上面配置好MySQL服务器的信息,添加好zabbix自带的Template App MySQL模版,然后去mysql服务器上安装agent,再添加mysql监控脚本. ...

最新文章

  1. linux cp sync,通过SSH使用Rsync传输文件,复制和同步文件及目录
  2. 一位群友作为后端开发在滴滴和头条分别干了 2 年的经验总结
  3. JPA入门例子(采用JPA的hibernate实现版本)
  4. saltstack(八):saltstack配置管理-安装配置启动tomcat样例
  5. windows10安装mysql 8.0_手把手教你在Windows 10安装MySQL 8.0(详细图文)
  6. 计算机桌面图标变成腾讯图标,桌面图标变成了未知图标
  7. charles请求入参中有乱码
  8. 1.5编程基础之循环控制 01 求平均年龄
  9. java 学习案例之英汉字典
  10. Codeforces-GYM101873 G Water Testing 皮克定理
  11. DaVinci Resolve Studio 17.4 for Mac(达芬奇剪辑调色软件)
  12. 区块链 PBFT最多多少个节点
  13. 三、经典比特与量子比特
  14. 天下武功,唯创不破:Atlassian产品中文版蓄力以待
  15. C++ Reference: Standard C++ Library reference: C Library: cstdio: vsprintf
  16. 【计算机网络】:IP分片详解及例题
  17. 北大计算机python教程_清华北大计算机系 联合推出的Java+Python1010集视频学习教程曝光...
  18. CmsTop 大众版运行环境搭建 (CentOS+Nginx+PHP FastCGI)
  19. 菜单栏程序坞APP的实现2(全面优化)
  20. 高三计算机基础应用教学计划,一级计算机基础及MS,Office应用教学计划

热门文章

  1. BZOJ 1857: [Scoi2010]传送带
  2. jQuery星级评分插件
  3. HTML Agility Pack:简单好用的快速 HTML Parser
  4. windows 7 help 帮助文件无法打开的解决
  5. Lesson 05 for Plotting in R for Biologists
  6. Jmeter --- Http Cookie Manager
  7. vaniglia 源码学习(一)
  8. php 获取客户端的ip、地理信息、浏览器信息、本地真实ip
  9. 推荐一下:微软的Ramp Up学习计划
  10. Linux常用基本命令及应用技巧1