高性能Mysql 序言3:服务器性能剖析

目录

 

3.1通过性能剖析进行优化

3.2对应用程序进行性能剖析

3.3剖析服务器负载

总结:


3.1通过性能剖析进行优化

性能剖析是测量和分析时间花费在哪里的主要方法。一般由两个步骤:测试任务所花费的时间;然后对结果进行统计和排序,将重要的任务排在前面。

mysql的性能剖析能将重要的任务展示在前面,但是有时没显示出来的信息也很重要,如下所示:

值得优化的查询

性能剖析不会自动给出哪些查询是值得花时间去优化的,另外当优化成本大于收益时,应该停止优化

异常情况

某些任务即使咩有出现在性能剖析输出的前面也需要优化,比如某些任务执行次数很少,但是每次执行慢,严重影响用户体验。

被隐藏的细节

性能剖析无法显示所有响应时间分布,只相信平均值时非常危险的,在操作里有可能一两个查询响应时间很高,这些都是无法显示出来的

3.2对应用程序进行性能剖析

剖析应用程序一般比剖析数据库要简单得多,而且汇报大。

性能瓶颈可能有很多影响因素:

  • 外部资源,比如调用了外部的web服务或者搜索引擎;
  • 应用需要处理大量的数据,比如分析一个超大的xml文件;
  • 在循环中执行昂贵操作,比如滥用正则表达式;
  • 使用低效的算法;

3.3剖析服务器负载

  • 捕获MySQL的查询到日志文件中

在当前mysql版本中,慢查询日志是开销最小的,精度最高的测量查询时间工具,在IO密集型场景下,慢查询日志带来的开销几乎忽略不计,但是需要关心的时日志可能会消耗大量的磁盘空间,长期开慢查询日志的话,注意要部署日志轮转工具,或者定时开慢查询。

  • 剖析单条查询方法
  1. 使用 SHOW PROFILE

设置 set profiling=1;然后在服务器执行的所有语句,都会测量其耗费的时间以及查询操作耗时,show profiles可以显示耗时,如:

但是问题来了,我们只能看到总的耗时,我们要是需要查询查询过程的耗时可以使用show profile for query 1;

这份报告给出查询执行的每个步骤需要花的时间,看结果可以确定哪个步骤耗时最多。

       2.使用SHOW STATUS

mysql的SHOW STATUS返回一些计数器,show global status 可以查看服务器级别的从服务器启动时开始计算的查询次数统计。

       3.使用SHOW PROCESSLIST

这个方法是通过不停地捕获SHOW PROCESSLIST的输出,来观察是否有大量线程处于不正常的状态或者有其它不正常特征。

        4.使用查询日志

如果要通过查询日志发现问题,需要开启慢查询日志并在全局级别设置long_query_time 为0,并且要确定所有的连接都采用了新设置。

  • IO利用率奇高

原因可能有两种情况:要么数据库io,要么系统缺少io资源影响数据库性能

什么情况导致性能低下:

  1. 资源已经被过渡使用,余量不足以正常公众;
  2. 资源没有被正确配置
  3. 资源应景选坏或者失灵

 

总结:

  • 我们认为定义性能最有效的是响应时间
  • 测量的最佳启点是应用程序
  • 完整测试产生大量需要分析的数据
  • 有两种消耗时间的操作:工作或者等待

 

 

相信大家看完肯定是糊里糊涂的,后面会专门开一章来讲解如何配置优化服务器。

前3章序言算是完了,接下来的7章讲相关的实用技巧了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值