Druid简介

据我所知Druid目前有两个,两个项目虽然名字相同,但是作用却截然不同。它们分别为:

  1. 由美国广告技术公司MetaMarkets创建的一个分布式的支持实时分析的数据存储系统(Data Store)–Druid,开源于2012 年晚期
  2. 由阿里巴巴创建的一个数据库连接池的项目–Druid 这里来我们只介绍由阿里巴巴开源的Druid项目

Druid–alibaba

Druid是什么

由阿alibaba在提供的介绍是:Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。

关键词:数据库连接池、监控、扩展功能

Maven依赖

Maven地址:http://central.maven.org/maven2/com/alibaba/druid/
依赖配置:

1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid-version}</version>
</dependency>
alibaba Druid源码

开源地址:https://github.com/alibaba/druid

Druid支持的数据库
数据库 支持状态
mysql 支持,大规模使用
oracle 支持,大规模使用
sqlserver 支持
postgres 支持
db2 支持
h2 支持
derby 支持
sqlite 支持
sybase 支持
Druid支持通过数据库URL自动识别驱动类
前缀 DriverCLass 描述信息
jdbc:odps com.aliyun.odps.jdbc.OdpsDriver
jdbc:derby org.apache.derby.jdbc.EmbeddedDriver
jdbc:mysql com.mysql.jdbc.Driver
jdbc:oracle oracle.jdbc.driver.OracleDriver
jdbc:microsoft com.microsoft.jdbc.sqlserver.SQLServerDriver
jdbc:sybase:Tds com.sybase.jdbc2.jdbc.SybDriver
jdbc:jtds net.sourceforge.jtds.jdbc.Driver
jdbc:postgresql org.postgresql.Driver
jdbc:fake com.alibaba.druid.mock.MockDriver
jdbc:mock com.alibaba.druid.mock.MockDriver
jdbc:hsqldb org.hsqldb.jdbcDriver
jdbc:db2 COM.ibm.db2.jdbc.app.DB2Driver DB2的JDBC Driver十分混乱,这个匹配不一定对
jdbc:sqlite org.sqlite.JDBC
jdbc:ingres com.ingres.jdbc.IngresDriver
jdbc:h2 org.h2.Driver
jdbc:mckoi com.mckoi.JDBCDriver
jdbc:cloudscape COM.cloudscape.core.JDBCDriver
jdbc:informix-sqli com.informix.jdbc.IfxDriver
jdbc:timesten com.timesten.jdbc.TimesTenDriver
jdbc:as400 com.ibm.as400.access.AS400JDBCDriver
jdbc:sapdb com.sap.dbtech.jdbc.DriverSapDB
jdbc:JSQLConnect com.jnetdirect.jsql.JSQLDriver
jdbc:JTurbo com.newatlanta.jturbo.driver.Driver
jdbc:firebirdsql org.firebirdsql.jdbc.FBDriver
jdbc:interbase interbase.interclient.Driver
jdbc:pointbase com.pointbase.jdbc.jdbcUniversalDriver
jdbc:edbc ca.edbc.jdbc.EdbcDriver
jdbc:mimer:multi1 com.mimer.jdbc.Driver

SpringBoot Druid开发

工具与包
  • idea
  • SpringBoot 2.1.2.RELEASE
  • MySQL
  • Druid 1.1.10
  • fastjson 1.2.54
pom.xml依赖
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.myk</groupId>
<artifactId>druid</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>druid</name>
<description>Demo project for Spring Boot</description>

<properties>
<java.version>1.8</java.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-jdbc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
</dependency>

<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.54</version>
</dependency>

</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>
application.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
server:
port: 8001

mybatis:
mapper-locations: classpath:mapper/*.xml

spring:
datasource:
druid:
# 连接池的配置
url: jdbc:mysql://${mysql_host}:${mysql_port}/[database]?useUnicode=true&characterEncoding=UTF8 # 数据库连接
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver # 驱动类
initial-size: 10 # 初始化大小
max-active: 50 # 最大活跃数
min-idle: 5 # 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请
max-wait: 20 # 最大等待
pool-prepared-statements: false #池的预编译,即PSCache
max-pool-prepared-statement-per-connection-size: 10 # 每个连接上PSCache的最大值
validation-query: SELECT 1 FROM DUAL # 连接验证,mysql空闲八小时就会自动断开所有的连接,所以需要这一条语句保持
validation-query-timeout: 60000 # 连接超时时间
test-on-borrow: true # 检测池里连接的可用性
test-on-return: false # 连接归还到连接池时是否测试该连接
test-while-idle: true #当连接空闲时,是否执行连接测试.
time-between-eviction-runs-millis: 30000 #指定空闲连接检查、废弃连接清理、空闲连接池大小调整之间的操作时间间隔
min-evictable-idle-time-millis: 30000 #指定一个空闲连接最少空闲多久后可被清除.
filters: stat,slf4j # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
# 监控配置
# WebStatFilter配置
web-stat-filter:
enabled: true # 是否启用StatFilter默认值true
url-pattern: /*
exclusions: '*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/* ' # 排除一些不必要的url,比如.js,/jslib/等等
session-stat-enable: true
session-stat-max-count: 100 # 默认sessionStatMaxCount是1000个,你也可以按需要进行配置
profile-enable: true # druid 0.2.7版本开始支持profile,配置profileEnable能够监控单个url调用的sql列表
# StatViewServlet配置
stat-view-servlet:
enabled: true #是否启用StatViewServlet默认值true
url-pattern: /druid/*
reset-enable: true
login-username: maiyikai
login-password: 123456
allow: 10.9.2.206
deny: 10.9.2.159
filter:
stat:
db-type: h2
log-slow-sql: true
slow-sql-millis: 2000
wall:
enabled: true
db-type: h2
config:
delete-allow: false
drop-table-allow: false

最后更新: 2019年10月12日 20:21

原始链接: https://maiyikai.github.io/2019/01/30/1548754787/

× ~谢谢大爷~
打赏二维码