MySql5.6版本开启慢SQL功能-本次采用永久生效方式

在这里插入图片描述

文章目录

  • 一、目的
  • 二、注意点说明
  • 三、操作步骤
    • 3.1 临时生效操作步骤
    • 3.2 永久生效操作步骤
    • 3.3 按日期生成日志文件
    • 3.4 执行成功后验证功能是否开启
  • 四、慢SQL日志记录内容介绍
  • 五、Shell脚本

一、目的

开启 MySQL 的慢查询日志(Slow Query Log)可以帮助你分析和优化数据库中的慢查询语句。通过记录执行时间超过阈值的 SQL 查询,慢查询日志能够提供以下用途:

  1. 性能优化: 慢查询日志能够帮助你找出执行时间较长的 SQL 查询语句,以及执行次数较多的查询。通过分析这些慢查询语句,你可以定位到导致性能瓶颈的代码块或者查询操作,进而对其进行优化,提高数据库的响应性能。
  2. 发现问题查询: 慢查询日志可以捕获执行时间较长的查询,帮助你发现潜在的性能问题、高查询负载或者设计不合理的查询语句。通过对慢查询日志的监控,你可以及时识别并修复这些问题,确保数据库的稳定性和可靠性。
  3. 优化索引: 慢查询日志可以揭示缺乏合适索引的查询语句。通过分析慢查询日志,你可以确定需要创建或优化的索引,提高查询的效率和性能。
  4. 监控查询情况: 通过定期分析慢查询日志,你可以了解数据库的查询模式和查询趋势。这有助于对系统性能进行长期监控,优化数据库设计和查询规划。

请注意,在生产环境中开启慢查询日志需要谨慎,因为它会产生额外的磁盘 I/O 和日志记录开销。你可以根据具体情况和需求来选择是否开启和设置合适的阈值。

二、注意点说明

  1. open_the_slow_sql_configuration_file.sh脚本就是开启MYSQL5.6版本的慢SQL功能的Shell脚本。
  2. 要想让此Shell脚本功能生效,必要前提就是生成慢SQL的日志存放路径文件夹必须先存在才行,比如脚本中配置slowSqlLogPath=/var/log/mysql,我必须先确保/var/log/mysql文件夹存在情况下,然后才能去重启网管服务让其生效。
  3. 单独只重启mysql服务不会生效,必须重启网管服务才可以。
  4. 该脚本一次只会固定产生一个类似叫slow_query_20230714.log日志文件,不会每天动态生成,所以如果想记录当天的慢SQL请在重启网管服务前有限执行一遍Shell脚本。
  5. 临时生效操作步骤只在当前已经启动中的mysql服务中生效,如果mysql服务重启了就失效了。
  6. 永久生效操作步骤,无论网管重启多少次都有效,但是不会每天动态创建一个对应日期的日志文件记录,只会存放于一个固定的日志名称中。
  7. 当前脚本只针对MySql5.6版本,不同版本脚本命令可能会有细微差别,需要定制化开发。
  8. linux修改配置文件为安装mysql下的配置文件叫my.cnf。
  9. windows服务器下和linux服务器下修改的文件名称不一样,我这个博客只针对需改Linux下mysql。

三、操作步骤

3.1 临时生效操作步骤

注意:不需要重启mysql服务,直接修改后生效。
第1步:先在服务器创建存放慢SQL日志文件夹的路径,确保路径存在再执行第2步。

第2步:执行sql,设置为 ON 表示启用慢查询日志。

set global slow_query_log=ON;

第3步:执行sql,指定执行时间多少秒以上的查询将被视为慢查询。在上述示例中,查询时间超过 10 毫秒的查询将被记录。

set global long_query_time=0.01

第4步:执行sql,指定日志文件的路径和名称。您可以根据实际需求更改路径和名称。

set global slow_query_log_file='/var/log/mysql/slow_query_20230713.log'

3.2 永久生效操作步骤

注意:需要重启mysql服务,但是生成的存放慢SQL的日志文件只有一个。
第1步:先将慢SQL开启脚本open_the_slow_sql_configuration_file.sh上传服务器某个路径下,进入该路径,并执行授权命令:

chmod  777  open_the_slow_sql_configuration_file.sh

第2步:先修改open_the_slow_sql_configuration_file.sh脚本中的日志存放路径slowSqlLogPath属性值。

第3步:根据第2步的存放路径在服务器创建文件夹,确保路径文件夹存在情况下再执行第3步。

第4步:重启网管服务让慢SQL功能生效。

3.3 按日期生成日志文件

注意:需要重启mysql服务,执行Shell脚本后需要重启网管,效果是重启后生成当天日期对应的日志文件。
第1步:执行Sell脚本,进入存放的目录中执行命令:

./open_the_slow_sql_configuration_file.sh

第2步:重启网管服务让慢SQL功能生效。

3.4 执行成功后验证功能是否开启

服务器连接登录mysql或者在数据库连接软件中执行相应sql,查看结果,如果结果都是你刚刚配置的,那就说明功能已开启且配置正确:

这是一个计数器,表示自 MySQL 服务器启动以来发生的慢查询数量。

show global status like '%slow_queries%';

在这里插入图片描述

这是一个计时器,表示自 MySQL 服务器启动以来所有慢查询执行所花费的总时间(以秒为单位)。

show global variables like 'long_query_time';

在这里插入图片描述

这是一个配置参数,表示被认为是慢查询的最小执行时间阈值。默认情况下,它的值是 10 秒,意味着执行时间超过 10 秒的查询将被记录为慢查询。您可以根据需求调整此值。

show variables like '%slow_query_log%';

在这里插入图片描述

四、慢SQL日志记录内容介绍

Tcp port: 18753  Unix socket: /home/ems/3rdparty/mysql/mysql.sock
Time                 Id Command    Argument
# Time: 230714 14:11:08
# User@Host: herounms[herounms] @  [10.161.29.105]  Id:     6
# Query_time: 0.306785  Lock_time: 0.020101 Rows_sent: 0  Rows_examined: 1393
use lte_ems;
SET timestamp=1689315068;
update lte_ems.monitor_sys_logSET STATUS = 1 where PRODUCT = 'PLATFORM'and STATUS = 0and LOG_TYPE = 'start';

参数介绍:

  • Time:代表sql的执行时间
  • User:代表哪个用户在哪台服务器上执行的
  • Query_time:慢查询语句的查询时间
  • Lock_time:锁表时间
  • Rows_sent:返回客户端的行数扫描过的行数
  • Rows_examined:导致慢查询的sql_text

五、Shell脚本

open_the_slow_sql_configuration_file.sh

#!/bin/bash
# Open the slow sql configuration file# Open slow SQL switch
sed -i "s|slow_query_log = .*|slow_query_log = ON|" /home/ems/3rdparty/mysql/my.cnf
echo "Configuration slow_query_log complete!"# Set the current date to the log name
current_date=$(date +%Y%m%d)
slowSqlLogPath=/var/log/mysql
sed -i "s|slow_query_log_file = .*|slow_query_log_file = $slowSqlLogPath/slow_query_$current_date.log|" /home/ems/3rdparty/mysql/my.cnf
echo "Configuration slow_query_log_file complete!"# Queries that take longer than a specified number of seconds to execute are considered slow
sed -i "s|long_query_time = .*|long_query_time = 0.01|" /home/ems/3rdparty/mysql/my.cnf
echo "Configuration long_query_time success!"echo "Configuration Complete!"

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

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

相关文章

Python爬虫学习笔记:1688商品详情API 开发API接口文档

1688API接口是阿里巴巴集团推出的一种开放平台,提供了丰富的数据接口、转换工具以及开发资源,为开发者提供了通用的应用接口及大量数据资源,支持开发者在1688上进行商品搜索、订单管理、交易报表及物流等方面的操作。 1688API接口主要包含以…

Ceph 块存储系统 RBD 接口

-创建 Ceph 块存储系统 RBD 接口- 1、创建一个名为 rbd-demo 的专门用于 RBD 的存储池 ceph osd pool create rbd-demo 64 642、将存储池转换为 RBD 模式 ceph osd pool application enable rbd-demo rbd3、初始化存储池 rbd pool init -p rbd-demo # -p 等同于 --pool4、…

harbor仓库故障排除

harbor仓库无法用docker login登录,一直报x509: cannot validate certificate for 172.17.10.29 because it doesn’t contain any IP SANs 1、检查docker和harbor的服务是否启动 [rootk8s-harbor harbor]#systemctl status harbor.service [rootk8s-harbor harbo…

换零钱II:零钱面值动态变化,class方法自动兑换最少零钱(贪心算法)

银行现存零钱面值种类动态变化但数量无限,类方法change()完成指定金额的最少零钱个数兑换。 (本笔记适合学透python基本数据结构,熟悉class的基构造,对类内全局变量有一定认的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1…

Linux 之 基本工具(一)

一、粘滞位 1.背景 在现实生活中,有很多人会在同一台云服务器上共同工作,会出现这些人的某些文件需要保存但又不想保存在各自的家目录下且这些文件需要共给其他一同工作的同事共享(可查阅)的情况,则需要将这些文件保…

解决:eclipse无法查看源代码

eclipse的jdk没有配置对应的src,需要手动去添加jdk的源代码附件。 步骤如下: 1、找到以下路径:windows(窗口)–>Preferences(首选项)–>Java–>Installed JRES(已安装的JRE),出现如下图所示的图片后,选中点…

Linux5.16 Ceph集群

文章目录 计算机系统5G云计算第四章 LINUX Ceph集群一、Ceph1.存储基础1)单机存储设备2)单机存储的问题3)商业存储解决方案4)分布式存储(软件定义的存储 SDS)5)分布式存储的类型 2.Ceph 简介3.C…

JavaSwing+MySQL的聊天系统设计

点击以下链接获取源码: https://download.csdn.net/download/qq_64505944/88055544 JDK1.8、MySQL5.7 功能:类似于QQ软件的聊天系统,可以进行登录注册聊天发信息等功能

总结:WEB流量劫持

一、背景 在整理WEB鉴权与登陆等技术的时候,会涉及到安全,而鉴权登陆不安全有个很大的可能就是流量被劫持了。 本篇文章主要是想弄明白黑客是怎么劫持的。 二、WEB流量劫持是如何做到的? WEB流量劫持是指黑客将受害者的网页请求重定向到攻…

同比环比数据可视化

引言 数据分析和可视化在现代商业环境中变得越来越重要。随着数据的迅速增长,我们需要有效的工具来解释和理解这些数据。 数据可视化提供了一种直观的方式,帮助我们从海量数据中提取有意义的见解,以支持业务决策。 同比环比图作为一种常见的…

Java学到什么程度可以在当下面试找工作?

今年的面试主打一个字:卷! 随着经济环境下行,大厂降本增效、筛除了一部分冗余岗位,原本荒蛮的IT行业发展正在逐步进入正轨中。虽说今年就业环境不容乐观,但数据不会骗人,以Java为例,在职友集上…

vue2项目使用?.语法报错如何解决?(@babel/plugin-proposal-optional-chaining)

文章目录 一、问题原因二、下载并配置插件第一步第二步第三步 一、问题原因 因为有些浏览器版本不兼容?.语法,可以使用$$来代替(如下图所示),但是为了团队协作避免麻烦使用?.带来的问题,可以使用这个(babel/plugin-p…