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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: MySql5.6版本开启慢SQL功能-本次采用永久生效方式

image.png

@[toc]

一、目的

开启 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%';

image.png

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

show global variables like 'long_query_time';

image.png

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

show variables like '%slow_query_log%';

image.png

四、慢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!"
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
SQL 数据采集 关系型数据库
实现MySQL与SQL Server之间数据迁移的有效方法
总的来说,从MySQL到SQL Server的数据迁移是一个涉及到很多步骤的过程,可能会遇到各种问题和挑战。但只要精心规划、仔细执行,这个任务是完全可以完成的。
104 18
|
3月前
|
SQL 关系型数据库 MySQL
【MySQL】SQL分析的几种方法
以上就是SQL分析的几种方法。需要注意的是,这些方法并不是孤立的,而是相互关联的。在实际的SQL分析中,我们通常需要结合使用这些方法,才能找出最佳的优化策略。同时,SQL分析也需要对数据库管理系统,数据,业务需求有深入的理解,这需要时间和经验的积累。
101 12
|
3月前
|
关系型数据库 MySQL 大数据
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。
|
3月前
|
SQL 关系型数据库 MySQL
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
|
4月前
|
存储 关系型数据库 MySQL
MySQL细节优化:关闭大小写敏感功能的方法。
通过这种方法,你就可以成功关闭 MySQL 的大小写敏感功能,让你的数据库操作更加便捷。
258 19
|
4月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】如何将mysql含有group by的SQL转换成崖山支持的SQL
本文探讨了在YashanDB(崖山数据库)中执行某些SQL语句时出现的报错问题,对比了MySQL的成功执行结果。问题源于SQL-92标准对非聚合列的严格限制,要求这些列必须出现在GROUP BY子句中,而SQL:1999及更高版本允许非聚合列直接出现在选择列中。YashanDB和Oracle遵循SQL-92标准,因此会报错。文章提供了两种解决方法:使用聚合函数处理非聚合列,或将GROUP BY与ORDER BY拆分为两层查询。最后总结指出,SQL-92标准更为严谨合理,建议开发者遵循此规范以避免潜在问题。
|
4月前
|
关系型数据库 MySQL 数据库
|
4月前
|
SQL 分布式计算 资源调度
Dataphin功能Tips系列(48)-如何根据Hive SQL/Spark SQL的任务优先级指定YARN资源队列
如何根据Hive SQL/Spark SQL的任务优先级指定YARN资源队列
114 4
|
20天前
|
人工智能 运维 关系型数据库
数据库运维:mysql 数据库迁移方法-mysqldump
本文介绍了MySQL数据库迁移的方法与技巧,重点探讨了数据量大小对迁移方式的影响。对于10GB以下的小型数据库,推荐使用mysqldump进行逻辑导出和source导入;10GB以上可考虑mydumper与myloader工具;100GB以上则建议物理迁移。文中还提供了统计数据库及表空间大小的SQL语句,并讲解了如何使用mysqldump导出存储过程、函数和数据结构。通过结合实际应用场景选择合适的工具与方法,可实现高效的数据迁移。
143 1
|
2月前
|
存储 关系型数据库 MySQL
【赵渝强老师】OceanBase数据库从零开始:MySQL模式
《OceanBase数据库从零开始:MySQL模式》是一门包含11章的课程,涵盖OceanBase分布式数据库的核心内容。从体系架构、安装部署到租户管理、用户安全,再到数据库对象操作、事务与锁机制,以及应用程序开发、备份恢复、数据迁移等方面进行详细讲解。此外,还涉及连接路由管理和监控诊断等高级主题,帮助学员全面掌握OceanBase数据库的使用与管理。
154 5

相关产品

  • 云数据库 RDS MySQL 版
  • 推荐镜像

    更多