Druid连接池:慢查询监控
Java 8
Spring Boot 2.5.3
Druid 1.2.6
MySQL 5.7.21
---
前文展示了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)
参考文档
3、GitHub druid-spring-boot-starter项目
这里有更完善的Druid使用、配置介绍。
第一手资料。
4、