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

news2024/12/23 10:17:53

在这里插入图片描述

文章目录

  • 一、目的
  • 二、注意点说明
  • 三、操作步骤
    • 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_log
         SET STATUS = 1 
        where PRODUCT = 'PLATFORM'
        and STATUS = 0
        and 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.coloradmin.cn/o/773349.html

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

相关文章

怎么做活码二维码?动态码在线生成技巧

现在制作二维码用户大多习惯使用活码二维码,其优势在于能够在二维码不变的情况下修改内容,能够生成二维码长期使用,还可以设置有效期、加密等其他功能可以使用。那么怎么生成活码二维码呢?可以使用二维码生成器(免费在…

EasyCVR告警类型设置后首页需要刷新才能更新的问题优化

EasyCVR视频融合平台基于云边端一体化架构,可支持多协议、多类型设备接入,包括:NVR、IPC、视频编码器、无人机、车载设备、智能手持终端、移动执法仪等。平台具有强大的数据接入、处理及分发能力,可在复杂的网络环境中&#xff0c…

【Jeston Nano】环境配置-部署yolov5

【Jeston Nano】环境配置-部署yolov5 一.Jeston Nano系统初始化设置1.Chinese 语言包2.备份3.更换源 二.环境配置,安装包1.CUDA2.pip33.jtop4.配置可能需要的库5.安装所需要的依赖环境6.安装opencv的系统级依赖,一些编码库7.更新CMake8.u盘兼容 三、安装…

python web开发之WSGI/uwsgi/uWSGI详解

1. 三者的定义 WSGI是一种通信协议。uwsgi是一种传输协议。uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。 2.三者的使用场景 WSGI,全称 Web Server Gateway Interface,是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接…

Jmeter性能测试,通过插件监控服务器资源使用情况

Jmeter作为性能测试的首选工具,那么在性能测试过程中如何方便快捷的监测服务器资源使用情况? 可以通过jmeter 安装"PerfMon(Servers Performance Monitoting)"插件并配合服务端资源监控工具进行实现,详细操作流程如下:…

MySQL 中使用变量实现排名名次

title: MySQL 中使用变量实现排名名次 date: 2023-7-16 19:45:26 tags:- SQL 高级查询 一. 数据准备: CREATE TABLE sql_rank (id INT ( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT,user_id INT ( 11 ) UNSIGNED NOT NULL,score TINYINT ( 3 ) UNSIGNED NOT NULL,add_time date NO…

Spring Batch之读数据库—HibernateCursorItemReader(三十九)

一、HibernateCursorItemReader 对应关系映射(Object Relational Mapping,ORM)是一种为解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将Java程序中的对象自动持久化到关系数据库中。 H…

html 解决css样式 缓存 ---css引入添加时间戳

通过js 对引入的css添加时间戳 <script type"text/javascript">document.write("<link relstylesheet typetext/css href./style/base.css?v" new Date().getTime() ">");document.write("<link relstylesheet typetext…

和chatgpt学架构03-引入UI框架(elment-plus)

目录 1 项目目录及文件的具体作用1.1 App.vue1.2 main.js的作用1.3 main.js什么时候被调用1.4 npm run serve干了什么事情1.5 package.json的作用 2 安装UI框架2.1 安装命令2.2 全局引入 3 启动工程总结 我们已经安装好了我们的vue脚手架&#xff0c;用vscode打开工程目录 要自…

有序链表转换二叉搜索树

给定一个单链表的头节点 head &#xff0c;其中的元素 按升序排序 &#xff0c;将其转换为高度平衡的二叉搜索树。 本题中&#xff0c;一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差不超过 1。 示例 1: 输入: head [-10,-3,0,5,9] 输出: [0,-3,9,-10,nul…

封装hiredis成dll包,为老项目提供redis网络支持

第一步&#xff1a;准备VS环境 1、需要下载window8.1的SDK否则无法下载 2、平台工具集需要使用Visual Studio 2015(v140) 第二步&#xff1a;下载hiredis 去microsoft/hiredis下载windows版本的hiredis&#xff0c;并解压到本地 打开hiredis-master\msvs\vs-solutions中的sl…

linux之Ubuntu系列 find 、 ln 、 tar、apt 指令 软链接和硬链接 snap

查找文件 find 命令 功能非常强大&#xff0c;通常用来在 特定的目录下 搜索 符合条件的文件 find [path] -name “.txt” 记得要加 “ ” 支持通配符 &#xff0c;正则表达式 包括子目录 ls 不包括 子目录 如果省略路径&#xff0c;表示 在当前路径下&#xff0c;搜索 软链接…

GPT 如此强大,我们可以利用它实现什么?

GPT&#xff08;Generative Pre-trained Transformer&#xff09;是一种基于Transformer结构的预训练语言生成模型&#xff0c;由OpenAI研发。它可以生成高质量的自然语言文本&#xff0c;取得了很好的效果&#xff0c;被广泛应用于各个领域。以下是一些利用GPT实现的应用。 一…

01-复杂度1 最大子列和问题

中国大学MOOC-陈越、何钦铭-数据结构-2023夏季 题目集 题目 思路 令f(n)表示以第n个数结尾的连续序列的最大和&#xff0c;则状态转移方程为&#xff1a; 解释&#xff1a;如果f(n-1)小于零&#xff0c;代表对f(n)的值贡献为负。故&#xff0c;以为结尾的最大子列和就是&…

【Hydro】一个简单的HBV水文模型产流Python实现

说明 HBV模型包括一系列自由参数&#xff0c;其值可以通过率定得到。同时也包括一些描述流域和气候特征的参数&#xff0c;它们的值在模型率定是假定不变。子流域的划分使得在一个子流域中可能有很多参数值。虽然在大多数应用中&#xff0c;各子流域之间参数值只有很小的变化&a…

【已解决】idea使用debug启动一直卡着不动

debug启动时一直卡着不动出现下图提示&#xff0c;但是正常启动又可以启动 翻译结果是&#xff1a;方法断点可能会大大降低调试速度。很明显&#xff0c;有断点的位置没加对或者误加断点了&#xff0c;以下是解决方法。 打开 .idea文件夹&#xff0c;找到workspace.xml文件 找…

基于Javaweb实现ATM机系统开发实战(九)存款功能实现

先看前端界面确定后端需要处理的参数&#xff0c;把一些参数进行修改&#xff1a; <% page language"java" contentType"text/html; charsetUTF-8" pageEncoding"UTF-8"%> <% taglib prefix"c" uri"http://java.sun.com…

JavaScript运算符优先顺序

● 我们可以通过MDN去查看运算符的优先级 ● 可以看到运算符是从左到右还是从右到左进行运算的&#xff1b; let x, y; x y 25 - 10 - 5; console.log (x, y);上面的运算会现实10 10&#xff0c;为什么会得到这样的结果呢&#xff1f;因为你查看mdn那个表你会发现&#xf…

使用Jquery为页面添加元素,并设置元素的背景图片时,背景图总会延迟几秒才会出现的问题

介绍 使用 jquery&#xff0c;为页面添加元素时&#xff0c;同时动态设置元素的背景图&#xff0c;总是会导致背景图延迟几秒才会出现&#xff0c;如下图所示&#xff1a; 解决方式 创建一个 image 对象&#xff0c;定义 image 对象的 src 属性&#xff1b;在 image 对象的 o…

Linux搭建node环境-MobaXterm+node+pm2安装

1.登录session 2.安装X11-forwarding 我也不知道这个有什么用&#xff0c;但是有个叉叉在那里有点难受&#xff0c;就把它解决了什么是X11-forwarding&#xff1f;怎么使用&#xff1f; yum install xorg-x11-xauth xorg-x11-fonts-* xorg-x11-font-utils xorg-x11-fonts-Ty…