首页 > 数据库 >mysql慢查询分析

mysql慢查询分析

时间:2023-12-08 19:04:56浏览次数:39  
标签:分析 slow log 查询 mysql query 日志 连接池

一、实用druid自带web管理页面查看

mysql慢查询分析_SQL

Druid是一个开源的高性能数据库连接池,由阿里巴巴集团开发并开源,主要用于Java应用程序中与数据库的连接管理和资源池化。它提供了一系列功能和配置选项,旨在提供高效、可靠的数据库连接管理。

特性和功能:

高性能:Druid连接池通过一些优化策略实现高性能的数据库连接获取和释放。其中包括使用预创建连接来减少连接获取的开销,以及通过连接池扩展机制来快速处理并发请求。此外,Druid还提供了连接的闲置检测和定时回收机制,以避免连接长时间占用资源。

监控统计:Druid连接池内置了强大的监控统计功能,可以实时监控连接池的状态、活跃连接数、请求频率、SQL执行情况等。它提供了一个内置的Web界面,可以方便地查看连接池的监控数据,并进行性能分析和故障排查。

防止泄露:Druid连接池可以检测和关闭泄露的连接,防止长时间占用数据库连接资源。它提供了一套完善的连接泄露检测和回收机制,以保证连接资源的有效利用。

数据库访问优化:Druid连接池支持连接的预处理、批量更新等优化操作,可以提高数据库的访问效率。它还提供了SQL执行的慢查询日志功能,可以帮助开发人员找出慢查询语句,并进行性能优化。

安全防护:Druid连接池提供了一些安全防护机制,如SQL防火墙、黑白名单过滤等。这些机制可以保护数据库免受恶意SQL注入等。

配置灵活:Druid连接池的配置选项非常灵活,可以根据应用程序的需求进行定制。您可以设置连接池大小、最大连接数、连接超时时间、验证方式等参数,以满足不同场景的需求。

官网:GitHub - alibaba/druid: 阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池

二、mysql记录慢查询

mysql配置文件

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

可以配置的参数有:

  • slow_query_log:是否启用慢查询日志。
  • slow_query_log_file:指定慢查询日志位置及名称,默认值为host_name-slow.log,可指定绝对路径。
  • long_query_time:慢查询执行时间阈值,超过此时间会记录,默认为10,单位为s。
  • log_output:慢查询日志输出目标,默认为file,即输出到文件。
  • log_timestamps:主要是控制 error log、slow log、genera log 日志文件中的显示时区,默认使用UTC时区,建议改为 SYSTEM 系统时区。
  • log_queries_not_using_indexes:是否记录所有未使用索引的查询语句,默认为off。
  • min_examined_row_limit:对于查询扫描行数小于此参数的SQL,将不会记录到慢查询日志中,默认为0。
  • log_slow_admin_statements:慢速管理语句是否写入慢日志中,管理语句包含 alter table、create index 等,默认为 off 即不写入。

分析日志

mysql慢查询分析_SQL_02

写入日志的每个语句都以 # 字符开头。对于每一组慢SQL,第一行记录的是该条 SQL 执行的时刻,第二行记录的是执行该语句的用户和 IP 以及链接 id ,第三行的几个字段解释如下:

  • Query_time: duration 语句执行时间,以秒为单位。
  • Lock_time: duration 获取锁的时间(以秒为单位)。
  • Rows_sent: N 发送给 Client 端的行数。
  • Rows_examined: N 服务器层检查的行数(不计算存储引擎内部的任何处理)。

最下面的两行分别是此语句执行时候的时间戳和具体的慢 SQL 。

在命令行开启(有root权限)

# 查看慢查询是否开启
SHOW VARIABLES LIKE '%slow_query_log%'

# 开启慢查询
SET GLOBAL slow_query_log='ON'

# 查看慢查询日志位置
SHOW VARIABLES LIKE '%slow_query_log_file%'

# 查看慢查询阈值,单位:秒
SHOW GLOBAL VARIABLES LIKE '%long_query_time%'

# 修改慢查询阈值,单位:秒
SET long_query_time=1

# 查看慢查询语句的数量
SHOW GLOBAL STATUS LIKE '%Slow_queries'

# 测试执行一个慢查询语句
SELECT SLEEP(3);

参考

Spring Boot3.0(二):整合数据库连接池Druid - 知乎 (zhihu.com) 

https://www.cnblogs.com/FengZeng666/p/17463676.html


标签:分析,slow,log,查询,mysql,query,日志,连接池
From: https://blog.51cto.com/u_15621957/8741172

相关文章

  • 使用django连接MySQL
    使用python311+pycharm社区版+MySQL80,使用django连接MySQL1.下载1.1.官网下载pythonhttps://www.python.org/downloads/如我的python3.11.4,可以进入如下的页面进行hash校验https://www.python.org/downloads/release/python-3114/1.2.官网下载pycharmhttps://www.......
  • 通过C语言连接MySQL数据库
    一、如何连接MySQL首先需要安装MySQLsudoapt-getupdatesudoapt-getinstallmysql-serverC语言的API代码是与MySQL一起提供的,它包含在mysqlclient库中,并允许C程序访问数据库,如果安装MySQL后仍提示缺少库,则需要安装如下:sudoapt-getinstalllibmysqlclient-devsudoa......
  • 栈内存和堆内存概念、内存逃逸分析
    为了让程序员更好地专注于业务代码的实现,Go语言增加了垃圾回收机制,自动地回收不再使用的内存。Go语言有两部分内存空间:栈内存和堆内存。1.栈内存栈只允许往线性表的一端放入数据,之后在这一端取出数据,按照后进先出(LIFO,LastInFirstOut)的顺序,如图所示。往栈中放入元素......
  • 从根上理解elasticsearch(lucene)查询原理(1)-lucece查询逻辑介绍
    大家好,我是蓝胖子,最近在做一些elasticsearch慢查询优化的事情,通常用分析elasticsearch慢查询的时候可以通过profileapi去分析,分析结果显示的底层lucene在搜索过程中使用到的函数调用。所以要想彻底弄懂elasticsearch慢查询的原因,还必须将lucene的查询原理搞懂,今天我们就先来介......
  • Nacos源码(七):客户端实例变更事件机制源码分析
    在给出的NamingExample示例中,给出客户端订阅的代码,详情如下:客户端的订阅机制是通过事件完成的,NacosNamingService#subscribe()详情如下:客户端订阅主要步骤:1、注册事件监听器2、客户端订阅客户端订阅在Nacos源码(六):客户端服务发现源码分析中已经做了......
  • Nacos源码(五):服务端健康检查源码分析
    服务注册到Nacos后,其他服务就可以获取该服务的实例信息,调用此服务;当服务宕机,Nacos会将该服务信息从维护的服务实例列表中删除,此时,其他服务获取不到该服务的实例信息,无法调用该服务。该服务是否应该被删除,取决于该服务是否健康,Nacos提供健康检查机制,判断服务是否有问题,将不健康......
  • java.util.concurrent.RejectedExecutionException异常分析
    感谢:https://blog.csdn.net/wzy_1988/article/details/38922449核心池和最大池的大小graphTBA("提交新任务")-->G{"maximumPoolSize设置为<br/>无界值<br/>(例如:Integer.MAX_VALUE)"}G---|"无界值"|H["允许线程池适应任意数量的并发任务"]G---|"......
  • Intel710驱动代码分析-i40e_probe
    前言在710的这个专栏里,我上篇文章中主要分析了驱动代码中的注册函数以及注册所需的结构体,其中有很多内容,今天我们围绕i40e_probe这个探测函数进行分析,由于研究原因以及时间原因,对这个驱动代码的分析,还是紧紧围绕虚拟化这个部分来分析,也就是VF。代码在github上有共享链接在这:i40e大......
  • 从概念到实践,带你掌握层次递归查询
    本文分享自华为云社区《GaussDB数据库SQL系列-层次递归查询》,作者:Gauss松鼠会小助手2。一、前言层次递归查询是一种常见的SQL查询方式,特别是在一些层次化的数据存储结构中经常用到。本文主要以GaussDB数据库为实验平台,为大家讲解其使用方法。二、GuassDB数据库层次递归查询概......
  • 【SQLServer2019备份恢复】查询本身有问题、未正确设置 "ResultSet" 属性、未正确设置
    在SQLServer2019AlwaysOn节点备份策略失败:备份数据库(完整)(8502-HIS-SQLAG\HISAG)备份数据库所在的位置:本地服务器连接兼容性级别为70(SQLServer7.0版)的数据库将被跳过。数据库:所有用户数据库类型:完整追加现有任务开始:2023-12-08T14:10:07。任务结束:20......