首页 > 数据库 >数据库优化及慢查询日志分析

数据库优化及慢查询日志分析

时间:2024-06-22 17:59:52浏览次数:26  
标签:show 数据库 查询 SQL query 日志 执行 及慢

在数据库调优中,我们的目标就是响应时间更快,吞吐量更大。利用宏观的监控工具和微观的日志分析可以快速帮我们找到调优的思路和方式。
一、数据库服务器的优化步骤
1、观察服务器状态是否存在周期性波动(双11,618等),如果是执行2,否跳到3;
2、加缓存,更改缓存失效策略。如果解决则结束,否的话执行3;
3、仍有不规则延迟或卡顿,则开启慢查询,explain、show profiling ;如果是SQL等待时间过长,则执行4,否则(SQL执行时间过长)则跳到5;
4、调优服务器参数
5、索引设计优化;join表过多,需要优化;数据库表优化;
6、如果以上步骤都没解决问题,则检查SQL查询是否达到瓶颈;如果是执行7,否则跳到8;
7、读写分离(主从架构);分库分表(垂直分库、垂直分表、水平分表)
8、重新检查
小结 数据路的调优主要从硬件、系统配置、数据库表结构、SQL及索引四个方面进行,成本依次递减、效果依次递增。
二、查看系统性能参数
在MySQL种,可以使用show status 语句查询一些MySQL数据库服务器的性能参数、执行频率。
show status 的语法如下:

show status [global | session] status like '参数'

一些常用的性能参数:
1、Connections:连接MySQL服务器的次数
2、Uptime:服务器上线的时间
3、Slow_queries:慢查询次数
4、Innodb_rows_read:select查询返回的行数
5、Innodb_rows_inserted:执行insert操作插入的行数
6、Innodb_rows_updated:执行update操作更新的行数
7、Innodb_ros_deleted:执行delete操作删除的行数
8、Com_select:查询操作的次数
9、Com_insert:插入操作的次数
10、Com_update:更新操作的次数
11、Com_delete:删除操作的次数
若查询MYSQL服务器的连接次数,则可执行以下语句

show status like 'Connections'

其他相关查询替换相关参数即可
三、统计SQL的查询成本:last_query_cost
一条SQL查询语句在执行前需要确定查询执行计划,如果存在多种执行计划的话,MYSQL会计算每个执行计划所需要的成本,从中选择成本最小的一个作为最终执行的执行计划。
如果我们要想查看某条SQL的查询成本,可以在执行完该SQL之后,通过查看当前会话中的last_query_cost变量来得到他的查询成本。它通常也是我们评价一个查询执行效率的常用指标,这个查询成本对应的值是指SQL语句所需要读取的数据页数量。查询完相关SQL后执行以下语句
show status like ‘last_query_cost’
值越大说明需要花费的成本越大
四、定位执行慢的SQL:慢查询日志
MySQL的慢查询日志,用来记录在MysQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10秒以上(不含10秒)的语句,认为是超出了我们的最大忍耐时间值。
它的主要作用是,帮助我们发现那些执行时间特别长的sQL查询,并且有针对性地进行优化,从而提高系统的整体效率。当我们的数据库服务器发生阻塞、运行变慢的时候,检查一下慢查询日志,找到那些慢查询,对解决问题很有帮助。比如一条sql执行超过5秒钟,我们就算慢SQL,希望能收集超过5秒的sql,结合explain进行全面分析。
默认情况下,MySQL数据库没有开启慢查询日志,需要我们手动来设置这个参数。如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询由志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件。
1、开启慢查询日志参数
在使用之前,需要先查看一下慢查询是否已经开启,执行以下命令:

show variables like 'slow_query_log';

如果值为on说明已经开启,否则执行以下命令开启慢日志查询

set global slow_query_log = on;

2、查看一下慢查询日志文件的位置

show variables like 'slow_query_log_file';

3、查询long_query_time的阈值,并修改指定的阈值
ong_query_time 既是一个全局变量又是一个会话变量,所以需要同时设置,若只设置全局,则需新建会话才能生效。

show global variables like 'long_query_time';  #全局
show variables like 'long_query_time';    #会话
set global long_query_time = 1; #全局
set long_query_time = 1;    #会话

**补充:**上面的操作只是对本次MySQL服务器有效,若服务器重启,则会失效。若想永久有效,需要修改MySQL的配置文件my.cnf

[mysqld]
slow_query_log=ON     #开启慢查询日志的开关
slow_query_log_file=/var/lib/mysql/localhost-slow.log    #慢查询日志的目录和文件名信息
long_query_time=3     #设置慢查询的阙值为3秒,超出此设定值的SQL即被记录到慢查询日志
log_output=FILE

4、查询当前慢查询SQL的数量

show status like 'slow_queries';

5、关闭慢查询日志
方式一:临时性关闭
set global slow_query_log = off;
执行以上语句后,重启服务器即可。
方式二:永久性关闭
修改MySQL的配置文件my.cnf,将slow_query_log的值改为off,保存后,重启MySQL服务器即可
重启服务器命令:systemctl restart mysqld;

文章难免有所遗漏,详细的慢日志查询可以观看宋红康老师的视频教程,视频链接如下:
上半部分
下半部分

标签:show,数据库,查询,SQL,query,日志,执行,及慢
From: https://blog.csdn.net/qq_39964887/article/details/139884954

相关文章

  • .Net开发 ,Java开发 ,python开发 数据库开发,开发相关工具
    开发电脑安装相关工具软件Java开发Java编程、高级编程、面试题资料Python编程,网络编程,爬虫,面试,设计资料数据库mysql,sqlservice,sql优化资料C#语言、.Net开发、.Net高级编程资料......
  • 免费企业级日志采集工具
    免费试用下载:Gitee下载最新版本优势:A.开箱即用.解压直接运行.不需额外安装.B.批管理设备.设备配置均在后台管理.C.无人值守客户端自启动,自更新.D.稳定安全.架构简单,内存占用小,通过授权访问.......
  • 【C#进阶】LINQ和数据库操作_2024-06-22
    当我们踏入现代软件开发的世界,高效地管理和操作数据成为了编程的核心技能之一。让我们一步步来,用最直白的语言讲解这些与数据库操作和LINQ相关的知识点。LINQand数据库操作LINQ(LanguageIntegratedQuery,语言集成查询)是C#中一种强大而灵活的查询技术,它允许你以统一的方式查询......
  • 【MySQL 的三大日志的作用】
    在管理MySQL数据库时,了解和区分数据库使用的三大日志类型至关重要。这些日志对于确保数据的完整性、提供恢复机制以及维持数据库的稳定性发挥着关键作用。最主要还是小豆前段时间去参加面试被问到了这些内容,下面将详细讨论RedoLog、Binlog和UndoLog的异同。RedoLog(重做......
  • MySQL数据库故障恢复
    1、故障类型分类在此次故障中,对进行备份也未开启binlog日志,无法直接还原数据库,属于典型表内mysql-delete数据误删除。2、故障分析与可行性方案制定对于mysqlinnodb误删除导致记录丢失的恢复方案有三种,分别是备份还原、binlog还原和记录深度解析。MySQL数据库的恢复流程:1、......
  • 063java jsp ssm企业员工培训管理系统员工培训计划培训记录管理(源码+数据库+文档)
    项目技术:Spring+SpringMVC+MyBatis等等组成,B/S模式管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows7/8/10......
  • 059java jsp ssm二手玩具交换商城网站系统(源码+数据库+文档)
    项目技术:Spring+SpringMVC+MyBatis等等组成,B/S模式管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows7/8/10......
  • 056java jsp ssm客户关系管理系统(源码+数据库+文档)
    项目技术:Spring+SpringMVC+MyBatis等等组成,B/S模式管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows7/8/10......
  • 053java jsp ssm高校学生比赛活动信息系统(源码+数据库+文档)
    项目技术:Spring+SpringMVC+MyBatis等等组成,B/S模式管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows7/8/10......
  • 061java jsp ssm共享充电宝管理系统(源码+数据库+文档)
     项目技术:Spring+SpringMVC+MyBatis等等组成,B/S模式管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows7/8/1......