Druid连接池:慢查询监控

Java 8

Spring Boot 2.5.3

Druid 1.2.6

MySQL 5.7.21

---

前文:spring boot项目19:RDBMS连接池

前文展示了S.B.中如何使用Druid数据库连接池,本文继续前面的项目,介绍如何监控慢查询。

添加下面的配置:设置慢查询条件是 超过1毫秒 就是慢查询

# 文件application.properties 中 添加
# 慢查询 超过1毫秒就是
# 是否需要数据库的支持呢?不需要
spring.datasource.druid.filters=stat
spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=1

上面配置了filters值,只有一个 stat,Druid Wiki介绍如下:配置了这个 stat 过滤器,后面的慢查询配置才生效

StatFilter类部分源码:

/**
 * @author wenshao [szujobs@hotmail.com]
 */
public class StatFilter extends FilterEventAdapter implements StatFilterMBean {

    private final static Log          LOG                        = LogFactory.getLog(StatFilter.class);

    private static final String       SYS_PROP_LOG_SLOW_SQL      = "druid.stat.logSlowSql";
    private static final String       SYS_PROP_SLOW_SQL_MILLIS   = "druid.stat.slowSqlMillis";
    private static final String       SYS_PROP_MERGE_SQL         = "druid.stat.mergeSql";

    public final static String        ATTR_NAME_CONNECTION_STAT  = "stat.conn";
    public final static String        ATTR_TRANSACTION           = "stat.tx";
    
    // ...省略...
    
}

登录Druid监控后台:http://localhost:9000/druid,查看其“SQL监控”,显示为空。

 

执行查询:

localhost:9000/api/country/getById?id=1

查询成功。

再次检查Druid监控后台的“SQL监控”,发现多了1条记录:执行数为1

多次执行上面的查询(参数id可以变更为其它值),“SQL监控”也只是有这条记录,但是,执行数 变更为查询次数:

 

点击SQL列下的 查询语句超链接,可以看到下面的内容:查询语句 和 其它统计信息

 

说明:

1、重启应用,上面的SQL监控信息消失。

2、Druid的慢查询监控 和数据库的慢查询无关。

下面是数据库的慢查询配置:OFF-关闭状态

mysql> show variables like '%slow%';
+---------------------------+----------------------------------------+
| Variable_name             | Value                                  |
+---------------------------+----------------------------------------+
| log_slow_admin_statements | OFF                                    |
| log_slow_slave_statements | OFF                                    |
| slow_launch_time          | 2                                      |
| slow_query_log            | OFF                                    |
| slow_query_log_file       | /var/lib/mysql/ben-VirtualBox-slow.log |
+---------------------------+----------------------------------------+
5 rows in set (0.02 sec)

mysql> show variables like '%long_query%';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)

参考文档

1、MySQL慢查询—开启慢查询

2、Druid Wiki

3、GitHub druid-spring-boot-starter项目

这里有更完善的Druid使用、配置介绍。

第一手资料。

4、

转自:https://www.cnblogs.com/luo630/p/15355711.html

原文地址:https://www.cnblogs.com/javalinux/p/15662470.html