zoukankan      html  css  js  c++  java
  • 《高性能mysql》读书笔记:服务器性能剖析

    3.1 性能优化简介

    不合适的测量方式:
    1)在错误的时间启动和停止测量;
    2)测量的是聚合后的信息,而不是目标活动本身;

    优化任务的执行时间,最好的办法是测量定位不同的子任务花费的时间,然后优化去掉一些子任务、降低子任务的执行频率或者提升子任务的效率。

    3.1.1 通过性能剖析进行优化
    性能剖析一般两个步骤:
    1)测量任务所花费的时间;
    2)对结果进行统计和排序,将重要的任务排到前面;

    性能剖析报告:
    1)对相似任务进行分组汇总
    2)每行记录一个任务,包括任务名、执行时间、消耗时间、平均执行时间、占全部时间百分比;
    3)报告按消耗时间降序排序;

    两种类型的性能剖析:
    1)基于执行时间的分析;
    2)基于等待时间的分析;

    3.1.2 理解性能剖析
    值得优化的查询
    1)一些只占总响应时间比重很小的查询是不值得优化的;
    2)如果优化的成本大于收益,就应该停止优化;

    异常情况:执行频率低,时间占比小,但每次执行很慢,需要优化;
    未知的未知:丢失的时间,实际测量时间小于任务总时间;
    被掩藏的细节:平均值无法展现细节;

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

    性能瓶颈可能因素:
    1)调用了外部资源,比如第三方服务或者搜索引擎;
    2)应用需要处理大量数据;
    3)循环中执行耗时操作;
    4)使用了低效的算法;

    3.3 剖析mysql查询

    3.3.1 剖析服务器负载
    慢查询日志
    慢查询日志是开销最低、精度最高的测量查询时间工具。慢查询日志带来的开销可以忽略不计,但可能消耗大量的磁盘空间,建议不要长期启用慢查询日志,只在需要收集负载样本的期间开启即可。
    如果没有权限使用慢查询日志,可以不断使用SHOW FULL PROCESSLIST,查看查询的开始和消失时间,计算时间间隙。

    通用日志,对查询请求进行记录,很少用于性能分析。

    3.3.2 剖析单条查询
    主要是用SHOW STATUS, SHOW PROFILE, 检查慢查询日志的方式。

    SHOW PROFILE
    在服务器上执行的所有语句,都会测量其耗费的时间和其他一些查询执行状态变更相关的数据。
    方法:
    1)show profiles,查看所有语句的执行状态;
    2)show profile for query id,查看某条语句的执行时间;
    3)也可以查询INFORMATION_SCHEMA表中的,可以格式化输出各项执行时间;

    SHOW GLOBAL STATUS
    以较高的频率比如一秒执行一次SHOW GLOBAL STATUS命令捕获数据,问题出现时,可以通过某些计数器来发现。

    SHOW PROCESSLIST
    通过不停地捕获SHOW PROCESSLIST的输出,来观察是否有大量线程厨余不正常的状态或者特征。

  • 相关阅读:
    [IT学习]Python pandas 学习
    [IT学习]Python 小项目 通讯录 思路
    [IT学习]学习Python过程需要记忆的一些坑
    【线性结构】A1074Reversing Linked List
    【线性结构】一元多项式的乘法与加法运算
    【线性结构】两个有序链表序列的合并
    C/C++中函数参数传递的三种情况(p *p &p)
    解决pip安装包的时候超时失败(很多红色错误)的问题
    A1012The Best Rank
    B1015/A1062德才论
  • 原文地址:https://www.cnblogs.com/alan6/p/13565632.html
Copyright © 2011-2022 走看看