alibaba/druid

阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池

28,173

stars

7,302

commits

Java

primary language

Aug 1, 2026

updated

github.com/alibaba/druid/wiki

README

Alibaba Druid

Java CI Codecov Maven Central Last SNAPSHOT GitHub release License

English | 中文


Druid 是阿里巴巴开源的高性能数据库连接池和 SQL 解析器。它将 JDBC 连接池、SQL 解析分析、安全防护和监控统计深度整合为一体,是 Java 生态中功能最全面的数据库中间件之一。

核心特性

功能领域说明
JDBC 连接池高性能、可监控的连接池实现 DruidDataSource,支持物理连接预热、PSCache、KeepAlive 等高级特性
SQL 解析器支持 30 种 SQL 方言的完整解析器,生成 AST 抽象语法树,支持 SQL 格式化、改写和分析
SQL 防火墙基于 AST 的 WallFilter SQL 安全防护,可拦截 SQL 注入、危险操作等
监控统计内置 StatFilter 实时采集 SQL 执行统计、连接池状态,提供 Web 监控页面
Filter 扩展可插拔的 Filter-Chain 架构,支持日志、加密、统计等扩展
Spring Boot 集成提供 Spring Boot 2.x / 3.x / 4.x Starter,开箱即用
高可用HighAvailableDataSource 支持多数据源负载均衡、健康检查和故障切换

快速开始

Maven 依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.24</version>
</dependency>

Spring Boot 项目(推荐)

根据 Spring Boot 版本选择对应 Starter:

Spring Boot 版本Starter
2.xdruid-spring-boot-starter
3.xdruid-spring-boot-3-starter
4.xdruid-spring-boot-4-starter
<!-- Spring Boot 3.x 示例 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-3-starter</artifactId>
    <version>1.2.24</version>
</dependency>
# application.yml
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: password
    druid:
      initial-size: 5
      max-active: 20
      min-idle: 5
      max-wait: 60000
      # 启用 Filter
      filter:
        stat:
          enabled: true
          log-slow-sql: true
          slow-sql-millis: 2000
        wall:
          enabled: true

直接使用 DruidDataSource

DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
dataSource.setUsername("root");
dataSource.setPassword("password");
dataSource.setInitialSize(5);
dataSource.setMaxActive(20);
dataSource.setMinIdle(5);
dataSource.init();

// 使用连接
try (Connection conn = dataSource.getConnection()) {
    // 执行 SQL
}

SQL 解析器

// 解析 SQL
String sql = "SELECT id, name FROM users WHERE age > 18 ORDER BY name";
List<SQLStatement> stmts = SQLUtils.parseStatements(sql, DbType.mysql);

// 格式化 SQL
String formatted = SQLUtils.format(sql, DbType.mysql);

// 获取表信息
SchemaStatVisitor visitor = SQLUtils.createSchemaStatVisitor(DbType.mysql);
stmts.get(0).accept(visitor);
System.out.println("Tables: " + visitor.getTables());
System.out.println("Columns: " + visitor.getColumns());

项目模块

druid/
├── core/                           # 核心库(连接池、SQL 解析、安全、监控)
├── druid-spring-boot-starter/      # Spring Boot 2.x 自动配置
├── druid-spring-boot-3-starter/    # Spring Boot 3.x 自动配置
├── druid-spring-boot-4-starter/    # Spring Boot 4.x 自动配置
├── druid-wrapper/                  # 包装工具
├── druid-admin/                    # 集群监控管理端
└── doc/                            # 文档

SQL 方言支持

Druid SQL 解析器支持 30 种数据库方言,每种方言都提供完整的 Lexer、Parser、AST 和 Visitor 实现:

分类支持的数据库
主流关系型MySQL, PostgreSQL, Oracle, SQL Server, DB2, H2, Informix
国产数据库达梦 (DM), Oscar, GaussDB
分析型/MPPClickHouse, Doris, StarRocks, Teradata, Redshift
云原生/数仓BigQuery, Snowflake, Synapse, Hologres, ODPS (MaxCompute)
计算引擎Hive, Spark, Presto, Impala, Athena, Blink, Databricks
其他Phoenix, SuperSQL, Transact-SQL

文档

文档说明
架构概览整体架构设计与核心组件交互
连接池指南DruidDataSource 配置、调优与最佳实践
SQL 解析器指南SQL 解析、格式化、改写与方言扩展
SQL 方言支持完整方言支持矩阵与各方言特性
Filter 机制Filter-Chain 架构与自定义 Filter 开发
SQL 防火墙WallFilter 配置与 SQL 安全防护
监控统计StatFilter 与 Web 监控页面
高可用数据源HighAvailableDataSource 配置与使用
Spring Boot 集成Spring Boot Starter 配置指南
Wiki (中文)常见问题与进阶文档
Wiki (English)FAQ and documentation

从源码构建

git clone https://github.com/alibaba/druid.git
cd druid
mvn clean install

要求: Java 8+ JDK,Apache Maven 3.6+

贡献

欢迎参与 Druid 项目!请阅读 贡献指南 了解如何参与开发。

安全漏洞

请勿通过公开 Issue 报告安全漏洞。详见 安全策略

相关阿里云产品

License

Druid 基于 Apache License 2.0 开源。

Contributors

(top 30 of 283)

wenshao

5,514 commits

lizongbo

202 commits

yakolee

154 commits

lingo-xp

150 commits

alibaba/druid

阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池

28,173

stars

7,302

commits

Java

primary language

Aug 1, 2026

updated

github.com/alibaba/druid/wiki

README

Alibaba Druid

Java CI Codecov Maven Central Last SNAPSHOT GitHub release License

English | 中文


Druid 是阿里巴巴开源的高性能数据库连接池和 SQL 解析器。它将 JDBC 连接池、SQL 解析分析、安全防护和监控统计深度整合为一体,是 Java 生态中功能最全面的数据库中间件之一。

核心特性

功能领域说明
JDBC 连接池高性能、可监控的连接池实现 DruidDataSource,支持物理连接预热、PSCache、KeepAlive 等高级特性
SQL 解析器支持 30 种 SQL 方言的完整解析器,生成 AST 抽象语法树,支持 SQL 格式化、改写和分析
SQL 防火墙基于 AST 的 WallFilter SQL 安全防护,可拦截 SQL 注入、危险操作等
监控统计内置 StatFilter 实时采集 SQL 执行统计、连接池状态,提供 Web 监控页面
Filter 扩展可插拔的 Filter-Chain 架构,支持日志、加密、统计等扩展
Spring Boot 集成提供 Spring Boot 2.x / 3.x / 4.x Starter,开箱即用
高可用HighAvailableDataSource 支持多数据源负载均衡、健康检查和故障切换

快速开始

Maven 依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.24</version>
</dependency>

Spring Boot 项目(推荐)

根据 Spring Boot 版本选择对应 Starter:

Spring Boot 版本Starter
2.xdruid-spring-boot-starter
3.xdruid-spring-boot-3-starter
4.xdruid-spring-boot-4-starter
<!-- Spring Boot 3.x 示例 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-3-starter</artifactId>
    <version>1.2.24</version>
</dependency>
# application.yml
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: password
    druid:
      initial-size: 5
      max-active: 20
      min-idle: 5
      max-wait: 60000
      # 启用 Filter
      filter:
        stat:
          enabled: true
          log-slow-sql: true
          slow-sql-millis: 2000
        wall:
          enabled: true

直接使用 DruidDataSource

DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
dataSource.setUsername("root");
dataSource.setPassword("password");
dataSource.setInitialSize(5);
dataSource.setMaxActive(20);
dataSource.setMinIdle(5);
dataSource.init();

// 使用连接
try (Connection conn = dataSource.getConnection()) {
    // 执行 SQL
}

SQL 解析器

// 解析 SQL
String sql = "SELECT id, name FROM users WHERE age > 18 ORDER BY name";
List<SQLStatement> stmts = SQLUtils.parseStatements(sql, DbType.mysql);

// 格式化 SQL
String formatted = SQLUtils.format(sql, DbType.mysql);

// 获取表信息
SchemaStatVisitor visitor = SQLUtils.createSchemaStatVisitor(DbType.mysql);
stmts.get(0).accept(visitor);
System.out.println("Tables: " + visitor.getTables());
System.out.println("Columns: " + visitor.getColumns());

项目模块

druid/
├── core/                           # 核心库(连接池、SQL 解析、安全、监控)
├── druid-spring-boot-starter/      # Spring Boot 2.x 自动配置
├── druid-spring-boot-3-starter/    # Spring Boot 3.x 自动配置
├── druid-spring-boot-4-starter/    # Spring Boot 4.x 自动配置
├── druid-wrapper/                  # 包装工具
├── druid-admin/                    # 集群监控管理端
└── doc/                            # 文档

SQL 方言支持

Druid SQL 解析器支持 30 种数据库方言,每种方言都提供完整的 Lexer、Parser、AST 和 Visitor 实现:

分类支持的数据库
主流关系型MySQL, PostgreSQL, Oracle, SQL Server, DB2, H2, Informix
国产数据库达梦 (DM), Oscar, GaussDB
分析型/MPPClickHouse, Doris, StarRocks, Teradata, Redshift
云原生/数仓BigQuery, Snowflake, Synapse, Hologres, ODPS (MaxCompute)
计算引擎Hive, Spark, Presto, Impala, Athena, Blink, Databricks
其他Phoenix, SuperSQL, Transact-SQL

文档

文档说明
架构概览整体架构设计与核心组件交互
连接池指南DruidDataSource 配置、调优与最佳实践
SQL 解析器指南SQL 解析、格式化、改写与方言扩展
SQL 方言支持完整方言支持矩阵与各方言特性
Filter 机制Filter-Chain 架构与自定义 Filter 开发
SQL 防火墙WallFilter 配置与 SQL 安全防护
监控统计StatFilter 与 Web 监控页面
高可用数据源HighAvailableDataSource 配置与使用
Spring Boot 集成Spring Boot Starter 配置指南
Wiki (中文)常见问题与进阶文档
Wiki (English)FAQ and documentation

从源码构建

git clone https://github.com/alibaba/druid.git
cd druid
mvn clean install

要求: Java 8+ JDK,Apache Maven 3.6+

贡献

欢迎参与 Druid 项目!请阅读 贡献指南 了解如何参与开发。

安全漏洞

请勿通过公开 Issue 报告安全漏洞。详见 安全策略

相关阿里云产品

License

Druid 基于 Apache License 2.0 开源。

Contributors

(top 30 of 283)

wenshao

5,514 commits

lizongbo

202 commits

yakolee

154 commits

lingo-xp

150 commits

Languages

Java

96.5%

HTML

1.3%