为什么80%的码农都做不了架构师?>>>   

MySQL日志记录了MySQL数据库日常操作和错误信息,MySQL总共有四种类型的日志,通过分析这些日志可以查询到MySQL的运行情况、用户操作、错误信息等,可以为MySQL的管理和优化提供必要信息。

1、日志类型

MySQL总共有四种类型的日志,如下:

  • 错误日志:记录Mysql服务的启动、运行或停止MySQL服务时出现的问题,默认开启。
  • 查询日志:记录建立连接的客户端连接和执行的语句。
  • 二进制日志:记录所有更改数据的语句,可以用于数据复制。
  • 慢查询日志:记录所有执行时间超过设定时间(long_query_time)的查询

四种日志,仅错误日志默认开启,其他需要手动配置开启,启动日志会降低服务器性能、而且会占用大量磁盘空间。

什么是刷新日志?

刷新日志可以强制MySQL关闭旧的日志文件,重新打开新的日志文件 即切换到新的日志文件,例如:错误日志当手工删除后无法重新建立新的日志文件,则需要进行刷新日志操作才会重新创建日志文件。

如何操作?
可在服务器端执行:
mysqladmin -u root -p flush-logs
或在客户端执行
flush logs

2、二进制日志

1、原理介绍

二进制日志主要记录MySQL数据库的变化,主要运用场景为 MySQL replication ,例如主从复制,主主复制,环形复制(不常用),从机通过IO线程读取主机的二进制日志 生成自己的中继日志,然后自己的SQL线程通过中继日志进行复制数据功能,简单点说就是把SQL再执行一遍,主要原理详细如下图:

2、开启二进制日志

在my.cnf文件 [MySQLd]组下进行如下配置

log-bin[=path/filename]

例如:

log-bin

log-bin=mysql-bin

log-bin=/home/zhpt/logs/mysql-bin

以上三种方式都可开启二进制日志

其他配置:

expire_logs_days=10     #自动清除过期日志的时间
max_binlog_size=100M    #设置单个二进制日志文件的大小,默认为1G,不能设置超过1G或小于4096B

3、查看二进制日志及其设置

show variables like 'log_%'

结果如下:

也可使用

show binary logs

查看二进制日志文件的个数及文件名,如下图:

3、错误日志

MySQL错误日志记录了MySQL服务在运行中发生的任何严重错误信息,此错误类型默认开启。

1、查看日志文件配置

show variables like 'log_error%'

结果如下所示:

2、修改日志文件路径

在my.cnf文件 [MySQLd]组下进行如下配置

log-error=/home/zhpt/logs/MySQL_Ruoli.err

错误日志直接以文件的形式存储于磁盘上,可随时手工删除,删除后需要执行刷新日志才可生成新的错误日志。

4、通用查询日志

在my.cnf文件 [MySQLd]组下进行如下配置 开启 通用查询日志

log[=path/filename]

通用查询日志记录了用户的所有操作,可使用编辑工具直接查看,开启通用查询日志后,会降低数据库性能增大磁盘占用,不建议在生产环境中使用。

5、慢查询日志

慢查询日志是MySQL提供的用来记录执行时间过长的查询语句,为数据库性能优化提供重要依据。

1、查看慢查询日志开启状态及存储位置:

mysql> show variables like 'slow_query%';
+---------------------------+----------------------------------+
| Variable_name             | Value                            |
+---------------------------+----------------------------------+
| slow_query_log            | ON                               |
| slow_query_log_file       | /mysql/data/localhost-slow.log   |
+---------------------------+----------------------------------+

如上所示,此台服务器已经开启了慢查询日志功能,慢查询日志文件路径也在其data目录下。

2、查看慢查询日志超时时间

mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 5.000000 |
+-----------------+-----------+

3、开启慢查询日志

前面提到过,慢查询日志并不是默认开启的,开启慢查询可以通过如下方式:

  • 通过配置文件设置,此种修改方式为永久生效。

在my.cnf文件 [MySQLd]组下进行如下配置,开启慢查询日志,如下:

slow_query_log = ON
slow_query_log_file =/usr/local/mysql/data/slow.log
long_query_time=2             #设置超时时间为2秒,默认为10秒
  • 通过设置全局变量设置,此种方式重启后失效。

将 slow_query_log 全局变量设置为“ON”状态

mysql> set global slow_query_log='ON';

设置慢查询日志存放的位置

mysql> set global slow_query_log_file='/usr/local/mysql/data/slow.log';

查询超过2秒就记录

mysql> set global long_query_time=2;

开启记录没有使用索引的查询语句

mysql> set global log-queries-not-using-indexes = on

4、慢查询日志分析

上图是一条慢查询日志的内容,我们进行分析时主要看的就是执行信息,包括执行时间(Query_time)、发送行数(Rows_sent)、扫描行数(Rows_examined),通过降低扫描行数可以明显降低执行时间。

如果扫描行数明显大于发送行数说明此条SQL的索引命中率很低,可以优先进行优化。

关于降低降低扫描行数来提升查询效率最直接的例子就是MySQL的分页查询。

具体可以另一篇文章:最快速的办法解决MySQL数据量增大之后翻页慢问题

转载于:https://my.oschina.net/ruoli/blog/1625695

MySQL日志分类及性能分析你应该知道的知识相关推荐

  1. mysql 日志分类详解

    前言 对于IT从业人员来说,日志是日常开发和问题排查过程中非常重要的信息,通过日志可以了解到很多有用的信息,很多奇怪的不好定位的问题,往往可以通过分析日志找到答案. 在mysql中,也提供了多种类型的 ...

  2. 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 ...

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

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

  4. MySQL日志双一配置分析实战

    mysql双一配配置分析 mysql双一配置主要是binlog和redolog的落盘时间的 binlog的write 和 fsync 的时机,是由参数 sync_binlog 控制的: sync_bi ...

  5. MySQL调优之性能分析

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

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

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

  7. 计算机揭秘之:网络分类和性能分析

    文章目录 简介 OSI网络七层协议 延迟与带宽 延时的构成 IP协议 IP数据包 分片和重组 MSS与MTU TCP TCP三次握手 拥塞崩溃 流量控制 UDP NAT 总结 简介 程序员天天都在写代 ...

  8. [转]Mysql explain用法和性能分析

    本文转自:http://blog.csdn.net/haifu_xu/article/details/16864933  from  @幸福男孩 MySQL中EXPLAIN解释命令是显示mysql如何 ...

  9. mysql不同count的性能分析

    以下文章来源于Hollis ,作者Hollis(微信公众号搜索) 数据库查询相信很多人都不陌生,所有经常有人调侃程序员就是CRUD专员,这所谓的CRUD指的就是数据库的增删改查. 在数据库的增删改查操 ...

最新文章

  1. pfamscan 的使用_Hmmer安装与使用
  2. 在哪里可以运行EJB?
  3. 3分钟融云Demo体验:IM即时通讯篇
  4. http接口_基于Python的HTTP接口自动化测试框架实现
  5. juniper防火墙策略元素
  6. 2. PSR-2 --- 代码风格指南
  7. 简库软件库工具箱综合源码_iApp源码
  8. csdn切换格式markdown
  9. springboot集成微信公众号文章推送
  10. 树莓派python脚本开机自启动设置
  11. saltstack自定义returner之利用fluent+mysql进行结果收集
  12. RGB图转为灰度图的方法
  13. 后缀为.epub的是什么格式的文件
  14. css33d图片轮播_通过html+css3实现图片轮播切换
  15. 运维之DNS域名解析服务基础概念与Bind9安装
  16. ListView分页(带图片)显示用法案例。。。下
  17. springboot出现“org.hibernate.proxy.HibernateProxy. Forgot to register a type adapter?“的解决办法
  18. mp3剪切器如何剪切mp3格式的音频
  19. 计算机导论——信息安全基础06
  20. DOM DOM概述

热门文章

  1. opencv python教程简书_Python-OpenCV —— 基本操作一网打尽
  2. linux中iptable中端口,Linux如何打开iptables中的端口
  3. java版本lstm_LSTM java 实现
  4. python scrapy教程实例_Python之scrapy实例1
  5. 深度学习笔记(待续)
  6. 马普所机器学习课程 CMU701
  7. Anaconda3自带jupyter
  8. ListMapSet的操作和遍历 1
  9. P3375 【模板】KMP字符串匹配
  10. Hibernate入门注解笔记