• mysql18-Show Profile和全局日志


    1.是什么

      分析SQL执行带来的开销是优化SQL的重要手段。在MySQL数据库中,可以通过配置profiling参数来启用SQL剖析。该参数开启后,后续执行的SQL语句都将记录其资源开销,诸如IO,上下文切换,CPU,Memory等等。根据这些开销进一步分析当前SQL瓶颈从而进行优化与调整。相较于explain更加的详细。

    2.官网

    http://dev.mysql.com/doc/refman/5.5/en/show-profile.html

    3.开启profiling

    3.1查看参数

    show variables like 'profiling';

    ON表示开启,如果未开启,设置参数开启

    3.2设置参数开启

    SET GLOBAL profiling = 1

    4.设置profiles 记录数

    show variables like 'profiling_history_size';

    show profiles 默认显示最近15条的sql执行情况,15这个数字由profiling_history_size常量决定,你可以配置为0到100的数字最大支持100,如果设置为0则类似于关闭profiling选项

    5.使用profiles

    5.1查看最近执行的sql列表

    SHOW PROFILES

     可以看到最近的15条的sql的执行情况

    5.2查看某条记录的详情

    show profile [type] for query query_id

    type:  
        ALL                --显示所有的开销信息  
      | BLOCK IO           --显示块IO相关开销  
      | CONTEXT SWITCHES   --上下文切换相关开销  
      | CPU                --显示CPU相关开销信息  
      | IPC                --显示发送和接收相关开销信息  
      | MEMORY             --显示内存相关开销信息  
      | PAGE FAULTS        --显示页面错误相关开销信息  
      | SOURCE             --显示和Source_function,Source_file,Source_line相关的开销信息  
      | SWAPS              --显示交换次数相关开销的信息 
    show profile cpu,block io for query  59    # 59是Query_ID

    5.3几个大消耗的情况

    converting HEAP to MyISAM 查询结果太大,内存都不够用了往磁盘上搬了。

    Creating tmp table 创建临时表

    Copying to tmp table on disk 把内存中临时表复制到磁盘,危险!

    6.全局查询日志

    除了profile ,还提供了全局查询日志。默认关闭,开启后,会记录所有执行的sql。最好不要生产环境使用

    6.1查看参数

    show variables like 'general_log';

    6.2开启

    SET GLOBAL general_log = 1

    6.3全局日志的记录方式
    全局日志可以存放到日志文件中,也可以存放到Mysql系统表中。存放到日志文件中性能更好一些,默认是存放到日志文件中

    6.3.1查看日志存放方式

    show variables like 'log_output';

    6.3.2设置日志存放方式

    set global log_output='TABLE';  #设置放到表中
    set global log_output='FILE'; #设置放到日志文件中

     
    6.3.3在表中,可以select查看

    select * from mysql.general_log;

     BLOB的内容,开启备注即可查看到

    相较于profile ,全局日志的内容很简单,不够详细。

  • 相关阅读:
    敏捷个人2013.06月份户外活动报道:奥森健步读书分享会
    敏友的【敏捷个人】有感(16): 成为一个敏捷的人
    #敏捷个人# 每日认识101(14):成为一个敏捷个人
    4周的敏捷生活练习,你来吗?
    OKGo vs RxHttpUtils ...
    Android开发之EditText多行文本输入
    android开发中json与java对象相互转换
    android 调试崩溃Unable to instantiate application的解决方法
    Android.mk 使用说明
    几种知名开源富文本编辑器记录和对比(仅供参考)
  • 原文地址:https://www.cnblogs.com/jthr/p/15393327.html
Copyright © 2020-2023  润新知