美文网首页
Druid数据库连接池介绍与使用

Druid数据库连接池介绍与使用

作者: 落雨松 | 来源:发表于2018-12-12 20:51 被阅读0次

    一、简要介绍

       Druid数据源连接池来源于阿里巴巴,是淘宝和支付宝专用数据库连接池。事实上,它不仅仅是一个数据库连接池,还包含一个ProxyDriver、一系列内置的JDBC组件库、一个 SQL Parser。支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等等。Druid针对Oracle和MySql做了特别优化,比如Oracle的PSCache内存占用优化,MySql的ping检测优化。Druid提供了诸如MySql、Oracle、Postgresql、SQL-92等SQL语句的完美支持,是一个手写的高性能SQL Parser,支持Visitor模式,使得分析SQL的抽象语法树很方便。它执行简单SQL语句耗时在10微秒以内,对于复杂的SQL语句耗时也在30微秒左右。另外,通过Druid提供的SQL Parser可以在JDBC层面上拦截SQL并进行相应处理,比如说分库分表、SQL安全审计等。Druid也能防御SQL注入攻击,WallFilter就是通过Druid的SQL Parser分析语义实现的。
    

    二、实例demo测试

       1、首先添加Druid依赖,访问 [mvnrepository.com/artifact/com.alibaba/druid(http://mvnrepository.com/artifact/com.alibaba/druid) 
    

    选择需要的版本,复制maven内容到pom.xml

       2、添加Druid配置到application.yml中,核心代码如下,可直接复制使用:
    

    ···
    spring:
    datasource:
    url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: root

    配置监控统计拦截的filters,去掉后监控界面sql将无法统计,“wall”用于防火墙

    filters: stat,wall,log4j

    最大活跃数

    maxActive: 20

    初始化数量

    initialSize: 1

    最大连接等待超时时间

    maxWait: 60000

    打开PSCache,并且制定每个连接PSCache的大小

    poolPreparedStatements: true
    maxPoolPreparedStatementPerConnectionSize: 20

    通过connectionProperties属性打开mergeSql功能;慢sql记录

    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
    minldle: 1
    timeBetweenEvictionRunsMillis: 60000
    minEvictableldleTimeMillis: 300000
    validationQuery: select 1 from dual
    testWhileldle: true
    testOnBorrow: false
    testOnReturn: false
    type: com.alibaba.druid.pool.DruidDataSource
    ···
    3、开启Druis监控功能,新建类DruidConfiguration.java
    ···
    package com.wj.demo1;
    import com.alibaba.druid.support.http.StatViewServlet;
    import com.alibaba.druid.support.http.WebStatFilter;
    import org.springframework.boot.web.servlet.FilterRegistrationBean;
    import org.springframework.boot.web.servlet.ServletRegistrationBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    @Configuration
    public class DruidConfiguration {
    @Bean
    public ServletRegistrationBean statViewServlet(){
    //创建servlet注册实体
    ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/");
    //设置ip白名单
    servletRegistrationBean.addInitParameter("allow","127.0.0.1");
    //设置控制台管理用户
    servletRegistrationBean.addInitParameter("loginUsername","druid");
    servletRegistrationBean.addInitParameter("loginPassword","123456");
    //是否可以重置数据
    servletRegistrationBean.addInitParameter("resetEnable","false");
    return servletRegistrationBean;
    }
    @Bean
    public FilterRegistrationBean statFileter(){
    //创建过滤器
    FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean((new WebStatFilter()));
    //设置过滤器过滤路径
    filterRegistrationBean.addUrlPatterns("/
    ");
    //忽略过滤的形式
    filterRegistrationBean.addInitParameter("exclusions",".js.gif,.jpg,.png,.css,.ico,/druid/*");
    return filterRegistrationBean;
    }
    }
    ···
    4、运行项目, 项目运行成功后,我们要访问Druid的监控界面,访问地址:127.0.0.1:8080/d ruid/login.html 到达登录页面,

    输入DruidConfiguration.java中配置的用户名和密码,即可登录到我们的服务器监控页面

    我们已经成功的访问到了监控首页,可以看到大致包含了如下几个模块:数据源、SQL监控、SQL防火墙、Web应用、URI监控、Session监控、JSONAPI等。

    数据源

    可以看到项目中管理的所有数据源配置的详细情况,除了密码没有显示外其他都在。

    SQL监控

    可以查看所有的执行sql语句

    SQL防火墙

    druid提供了黑白名单的访问,可以清楚的看到sql防护情况。

    Web应用

    可以看到目前运行的web程序的详细信息。

    URI监控

    可以监控到所有的请求路径的请求次数、请求时间等其他参数。

    Session监控

    可以看到当前的session状况,创建时间、最后活跃时间、请求次数、请求时间等详细参数。

    JSONAPI

    通过api的形式访问Druid的监控接口,api接口返回Json形式数据。

    相关文章

      网友评论

          本文标题:Druid数据库连接池介绍与使用

          本文链接:https://www.haomeiwen.com/subject/zpdgxqtx.html