对Mysql进行深入的分析对于发现mysql性能瓶颈和寻找优化策略是十分必要的。 我们可以从不同的粒度上对Mysql进行分析:可以整体分析服务器,或者检查单个查询或批查询。

通过分析,我们得到的如下信息:

1、Mysql访问得最多的数据

2、Mysql执行得最多的查询的种类

3、Mysql停留时间最长的状态

4、Mysql用来执行查询的使用得最频繁的子系统

5、Mysql查询过程中访问的数据种类

6、Mysql执行了多少种不同类型的活动,比如索引扫描。

Mysql提供了两种查询日志,它们可以为我们获取以上信息提供帮助。 这两种查询日志为普通日志(general

log)和慢速日志(slow log)。

General log:

Geleral log记录了服务器接收到的每一个查询或是命令,无论这些查询或是命令是否正确甚至是否包含语法错误,general log 都会将其记录下来 ,记录的格式为 {Time ,Id ,Command,Argument

}。也正因为mysql服务器需要不断地记录日志,开启General

log会产生不小的系统开销。 因此,Mysql默认是把General

log关闭的。 我们可以通过修改Mysql全局变量来开启General

log功能或是更改日志存放路径。

注意:mysql5.0 版本,如果要开启slow log、general log,需要重启,从MySQL5.1.6版开始,general query log和slow query log开始支持写到文件或者数据库表两种方式,并且日志的开启,输出方式的修改,都可以在Global级别动态修改。

1、首先查看log_output,确认日志输出到文件还是数据库。

mysql> show variables like 'log_output';

+-------------------+-------+

| Variable_name | Value |

+-------------------+-------+

| log_output       |  FILE |

+-------------------+-------+

1 row in set (0.00 sec)

通过以上结果可以发现,log_output的值为FILE,证明是输出到日志文件,如果为TABLE则输出到默认‘mysql’数据库中的相应日志表,该表的默认引擎为CSV。

2、接下来通过如下命令可以查看 mysql默认的 General log 配置。

mysql> show global variables like '%general%';

+------------------+---------------------------+

| Variable_name | Value |

+------------------+---------------------------+

| general_log | OFF |

| general_log_file | /var/lib/mysql/ubuntu.log |

+------------------+---------------------------+

2 rows in set (0.00 sec)

general_log的值为OFF,所以当前general_log是关闭的。general_log_file变量的值是日志文件的路径。

3、通过 set global general_log = on; 命令开启General log。

4、最后我们可以从/var/lib/mysql/ubuntu.log文件中查看相应日志信息。

Slow

log:

General log日志内容比较简单,不包含执行时间或其他只有在查询结束之后才能得到的信息,相反,slow

log 记录了这些内容。

1、我们首先来看一下与慢日志相关的全局变量。

mysql> show global variables like '%slow%';

+---------------------+--------------------------------+

| Variable_name | Value |

+---------------------+--------------------------------+

| log_slow_queries | ON |

| slow_launch_time | 2 |

| slow_query_log | ON |

| slow_query_log_file | /var/lib/mysql/ubuntu-slow.log

|

+---------------------+--------------------------------+

4 rows in set (0.00 sec)

笔者的mysql已经开启了慢日志选项。变量slow_launch_time的值代表着捕获所有执行时间超过2秒的查询。slow log可以记录没有使用索引的查询,它也能记录执行速度比较慢的管理命令。

开启log_queries_not_using_indexes,将会记录没有使用索引的查询到slow日志里。

mysql> show global variables like '%not_using%';

+-------------------------------+-------+

| Variable_name | Value |

+-------------------------------+-------+

| log_queries_not_using_indexes | OFF |

+-------------------------------+-------+

1 row in set (0.00 sec)

slow log 的日志格式为:

# Time: 111108 19:38:00

# User@Host: root[root] @ localhost []

# Query_time: 15.268541 Lock_time: 0.000237 Rows_sent: 1 Rows_examined: 102

use mytest;

SET timestamp=1320752280;

select count(a.b) from mytable a ,mytable b ,mytable c ,mytable d;

慢速日志的确提供了很多有用的信息,但是不代表出现的查询一定一直都是慢的。如果同样的查询在慢速日志里出现了多次,那么它的确需要优化,但是如果只是出现了偶尔一两次,则有可能是其他客观原因造成的,比如某些锁,I/O磁盘物理性问题,网络问题等等。

慢速日志的slow_launch_time的时间单位为秒,可以通过网上第三方补丁将其更改为毫秒级,用于更加精细的日志记录和分析,但是这需要重新编译mysql。

我们通常在日志中查找下面几个信息:长查询、影响比较大的查询和新查询。这可能需要我们自己写一下脚本或是借助某些第三方工具进行日志分析。

General log 系统开销比较大,一般不建议开启。

mysql genlog 分析_Mysq性能分析 —— Genral log(普通日志)与 Slow log(慢速日式)...相关推荐

  1. MySQL第11天:MySQL索引优化分析之性能分析

    MySQL索引优化分析之性能分析 一.MySQL Query Optimizer 二.MySQL常见瓶颈 三.Explain(执行计划) 1.什么是执行计划?          2.执行计划能干什么? ...

  2. 【蜂鸟E203的FPGA验证】Chap.8 Vivado综合与性能分析-Vivado性能分析

    [蜂鸟E203的FPGA验证]Chap.8 Vivado综合与性能分析-Vivado性能分析 综合后资源利用率分析 2. 综合后功耗与功耗优化 3. 综合后布局布线实现 4. 综合后静态时序分析 前言 ...

  3. MySQL 进阶 索引 -- SQL性能分析(SQL执行频率:查看当前数据库的INSERT、UPDATE、DELETE、SELECT的访问频次、慢查询日志、 profile详情、explain)

    文章目录 1. SQL性能分析 1.1 SQL执行频率(可以查看当前数据库SQL的访问频次) 1.2 慢查询日志(可以记录用时较长的SQL) 1.2.1 开启慢查询日志 1.2.2 慢查询日志测试 1 ...

  4. MySQL调优之性能分析

    目录 1.SQL执行频率 2.SQL性能分析 慢查询日志 profile详情 开启profile 使用profile explain 1.SQL执行频率 MySQL客户端连接成功后,通过 show[s ...

  5. mysql bytessent_如何对DSQLSERVER、MySQL、Orache语句性能分析

    SQLSERVER语句性能分析 SQL SERVER通过设置STATISTICS查看执行SQL时的系统情况. SET STATISTICS PROFILE ON:显示分析.编译和执行查询所需的时间(以 ...

  6. mysql火焰图_Linux 性能分析利器 -火焰图 flame graph

    简述 Perf 命令(performance的简写)是 Linux 系统原生提供的性能分析工具,返回 CPU 正在执行的函数名以及调用栈(stack). 通常,它的执行频率是 99Hz(每秒99次), ...

  7. python代码性能分析_Python 性能分析入门指南

    虽然并非你编写的每个 Python 程序都要求一个严格的性能分析,但是让人放心的是,当问题发生的时候,Python 生态圈有各种各样的工具可以处理这类问题. 分析程序的性能可以归结为回答四个基本问题: ...

  8. matlab仿真及分析,CSMACD性能分析及MATLAB仿真.pdf

    CSMACD性能分析及MATLAB仿真 内江师范学院学报 第 卷第 期 30 12 · · JOURNALOF NEIJIANG NORMAL UNIVERSITY No.12Vol.30 14 / ...

  9. 移动端测试 APP启动性能分析 WebView性能分析 H5性能分析 卡顿分析 帧分析 CPU统计 网络流量分析 耗电量指标 弱网测试 健壮性测试 兼容性测试 Amdahl

    Android官网使用指南性能:https://developer.android.com/topic/performance 一.APP启动性能分析 APP的启动过程 调用起APP.创建一个空白窗口 ...

最新文章

  1. PyTorch 的 Autograd详解
  2. python的类属性和方法_Python中类属性、实例属性和实例方法的区别
  3. 顶部标题栏(四)自定义ActionBar风格和样式
  4. javascript编程风格(粗略笔记)
  5. 疫情中的2021,云原生会走向哪里
  6. SQLServer之深度分析跟踪
  7. Flink开发需要的环境
  8. [Elasticsearch2.x] 多字段搜索 (二) - 最佳字段查询及其调优 译
  9. java程序内存泄漏排查
  10. 图:活动现场双屏管理系统V3-多线程抽奖版软件,完美升级收工!历时3个月,艰辛坎坷...
  11. JNI中,getBytes()最好指明UTF-8
  12. access做mysql前端,ASP+ACCESS留言板制作详细教程
  13. jQuery源码高清视频教程
  14. python微信刷屏_用python玩转微信
  15. 计算语言学之拼写纠错
  16. matlab-计算个人所得税
  17. 常见swap()函数实现和细节讲解
  18. 银河麒麟操作系统添加新硬盘后流程
  19. 使用 Electron 构建桌面应用
  20. gcc编译-m32、-mx32有什么区别

热门文章

  1. php入门时间,PHP入门(8)日期和时间
  2. Ubuntu Vmwaretools安装说明
  3. 攻防世界-Misc-_Aesop_secret
  4. Python字符串和正则表达式中的反斜杠(‘\‘)问题
  5. Python代码规范之简明概述
  6. Python中随机森林的实现与解释
  7. python使用threading模块实现多线程
  8. cmd 查看本地ip_西门子WinCCV7.4使用普通网卡通过TCP/IP连接PLC步骤
  9. arm linux c++编译警告:ISO C++ forbids converting a string constant to ‘char*’(需要把const char*转换成char*)
  10. vscode html如何插入模板?(!)