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

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

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再执行一遍,主要原理详细如下图:

28091547_ge3d.gif

    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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/255389.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/255389.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用三个点(trsf)来实现各种规则图形的实现

在Val3,是使用trsf(x,y,z,rx,ry,rz)来实现三维空间点的位置与方向。 其中第一点和第二点位置很重要,第三点是用来确定方向。根据这三个点先确定一个用户坐标系。 在这个坐标系中,实现圆,三角形,矩形,腰圆,正…

android基础组件----Button的使用

按钮由文本或图标(或文本和一个图标)组成,当用户触摸到它时,会发生一些动作。今天我们开始Button的学习。少年的爱情永远不够用,一杯酒足以了却一件心事。 Button的简要说明 根据你是否想要一个带有文本的按钮&#xf…

@Repository、@Service、@Controller 和 @Component

Repository 、Service 、 Controller 、Component 这四个Spring注解 ,用于把加了注解的 类 加入到Spring 容器中管理,节省了xml 的繁重的配置,尽管如此xml 同样可以实现(一般建议先搞懂xml)。 Repository Repository注解便属于最先…

【pyqt5学习】——QTextEdit控件学习:获取文本、添加文本

目录 1、QTextEdit控件介绍 2、QTextEdit控件添加文本、添加HTML格式 3、QTextEdit控件获取文本、获取HTML格式文本 4、案例 1)完整代码 2)效果 1、QTextEdit控件介绍 QTextEdit控件是一个支持多行输入的输入框,支持HTML进行格式的设置 2…

空间变化

空间变化 第一种:圆 第二种: 矩形 第三种:正五边形 第四种:正六边形 第五种:腰圆 算法: 在规则图形(不包括圆心-直径法)中,等于或者超过三个点。一般的,利用p1,p2,p3来建立一个用户…

【pyqt5学习】——QAbstractButton学习(普通按钮QPushButton、工具按钮QToolButton、单选按钮QRadioButton、复选框按钮QCheckBox)

目录 1、按钮介绍 2、普通按钮QPushButton学习 1)特殊模式——开关按钮(toggle) ①将按钮设置为可选择的 ②将按钮按下 判断按钮是否被按下 isChecked() 2)给按钮设置前置图标setIcon() ​编辑 3)按钮信号 4)完…

java 企业 网站源码 模版 屏幕自适应 有前后台 springmvc SSM 生成静态化

前台: 支持四套模版, 可以在后台切换点击:获取地址QQ 313596790官网 http://www.fhadmin.org/系统介绍:1.网站后台采用主流的 SSM 框架 jsp JSTL,网站后台采用freemaker静态化模版引擎生成html2.因为是生成的html&…

挖财后端架构简介

挖财后端技术用的主要是比较大众的东西,Web容器用Tomcat,框架主要是Spring MVC,也有少量的Play,中间服务层是Dubbo,微容器用Spring Boot,服务注册这一块是用ZooKeeper,核心业务开发方式还是围绕…

【pyqt5学习】——QcomboBox学习

目录 1、添加条目: 1)逐一添加 2)批量添加 3)获取当前选中的索引 4)获取当前选中文本 5)根据索引获取文本 6)统计条目总数 7)信号——当前选中的索引发生改变currentIndexChanged() 2、…

vSphere Client 编辑虚拟机属性的问题

vSphere Client 编辑虚拟机属性的问题 编辑虚拟机属性的时候, 出现: vpxclient.vmconfig.cpuid 初始值设置异常之类的,重置了, 并将注册表中的所有vmvare 相关键值删除了, 还是一样的。。 后面参照https://kb.vmware.c…

Val编程-系统架构

利用Val可以编写相对大型软件。 界面书写,运动轨迹规划,外部通讯,进程交互,文本读写.... GlobalData可以利用一个库来作为一个公用库,实现各个库的数据交互。 PublicFunc书写基本的通用函数来作为基本函数,…

poj 1256 Anagram—next_permutation的神奇应用

题意:给你一条字符串,让你输出字符串中字符的全排列,输出的顺序要按它给的奇葩的字典序。 题解:要输出全排列,暴力dfs可以过,但要注意题目的字典序以及相同字符的情况。如果用next_permutation()处理可以简…

【pyqt5学习】—— 滑动条Qslider、计数器QSpinBox学习

目录 1、滑动条QSlider 1)常用属性 2)实例——利用滑动条来实现字体大小的修改 ​编辑 2、计数器QSpinBox 1)属性方法 2)实例 1、滑动条QSlider 1)常用属性 self.slider QSlider(Qt.Horizontal)# 设置最小值self.slider.setMinimum(2)…

shell常用命令之curl: -w,–write-out参数详解

顾名思义,write-out的作用就是输出点什么。curl的-w参数用于在一次完整且成功的操作后输出指定格式的内容到标准输出。 输出格式由普通字符串和任意数量的变量组成,输出变量需要按照%{variable_name}的格式,如果需要输出%,double一…

Val编程-速度因子

机械手臂在一个三个基本指令(movel,movej,movec)指令中有下面基本参数进行配置。 1. Frame toolField; Tcp的值2. Frame frameField;用户坐标系的值3. MoveType absRelField;绝对运动与相对运动4. Config configField;姿态5. BlendType blendTypeField;倒…

Node.js学习之路24——Express框架的app对象

1.express() 基于Node.js平台,快速、开放、极简的web开发框架。创建一个Express应用.express()是一个由express模块导出的入口top-level函数.const express require(express); let app express(); 1.1 静态资源管理 express.static(root, [options]) express.stat…

【pyqt5学习】——对话框QDialog学习(QMessageBox、QColorDialog、QFIleDialog、QFontDialog、QInputDialog)

目录 1、对话框QDialog类别 2、通用对话框 ​编辑 3、消息对话框QMessageBox() 1)消息对话框QMessageBox类型 2)案例 ​编辑 4、输入对话框QInputDialog 1) 类型 2)案例 5、字体格式对话框QFontDialog 6、颜色对话框QColorDialog 1&…

使用 Mesos 管理虚拟机

摘要 为了满足渲染、基因测序等计算密集型服务的需求,UCloud 推出了“计算工厂”产品,让用户可以快速创建大量的计算资源(虚拟机)。该产品的背后,是一套基于 Mesos 的计算资源管理系统。本文简要介绍该系统的结构、Mes…

Swift数据类型_整型和浮点型

//swift中的整型和浮点型/***//类型推断整数是Int 浮点数是Double ,日常使用需要注意不能越界,存储时间毫秒数 英雄经验数等等之类内容容易越界整型大多数情况下,你不需要在代码中指定哪种整型。Swift提供了一种额外的整型,Int类型Java中的long型&#x…

Val编程-套接字

套接字的介绍:http://zh.wikipedia.org/wiki/Berkeley%E5%A5%97%E6%8E%A5%E5%AD%97 主要分为客户端和服务器。客户端一般是需要主动去链接,需要配置服务器的IP和端口。服务器是被动响应,需要打开相应的端口。端口一般不推荐使用系统端口和常用…