zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    死锁程序示例
    用Intellij打可执行jar包
    Semaphore tryAcquire release 正确的使用方法
    计算对象占用空间工具类
    mysql高效分页方案及原理
    乐视秒杀:每秒十万笔交易的数据架构解读
    mysql 联合索引(转)
    mysql中in和exists二者的区别和性能影响
    怎样避免 i f 判断过多,全复杂度较高,代码不美观的问题?
    Java中Enum类型的序列化(转)
  • 原文地址:https://www.cnblogs.com/javalinux/p/15662470.html
Copyright © 2011-2022 走看看