那些好用的连接池们

HikariCP

HikariCP为什么快

  1. 字节码级别优化(很多方法通过JavaAssist生成)
  2. 大量小改进
    1.通FastStatementList代替ArrayList

    1. 无锁集合ConcurrentBag
    2. 代理类的优化(比如,用invokestatic代替了invokevirtual)

在Spring Boot中的配置

Spring Boot 2.x

  • 默认使用HikariCP
  • 配置spring.datasource.hikari.*配置

Spring Boot 1.x

  • 默认使用Tomcat连接池,需要移除tomcat-jdbc 依赖
  • spring.datasource,type=com.zaxxer.hikari.HikariDataSource

Alibaba Druid

Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能。功能强大,能防SQL注入,内置Logging呢个诊断Hack应用行为 —-Alibaba Druid官方介绍

Druid

经过阿里巴巴各大系统的考验,值的信赖
实用功能

  • 详细的监控(真的是全面)
  • ExceptionSorter,针对主流数据库的返回码都有支持
  • SQL防注入
  • 内置加密配置
  • 众多扩展点,方便进行定制

数据源配置

通过 druid-spring-boot-starter

  • spring.datasource,druid.*
    image
  • Filter配置
    • spring.datasource.druid.filters=stat,config,wall,log4j(全部使用默认值)
  • 密码加密
    • spring.datasource.password=<加密密码>
    • spring.datasource.druid.fliter.config.enabled=true
    • spring.datasource.druid.connection-propertiles=config.decrypt.key=
  • SQL防注入
    • spring.datasource.druid.fliter.wall.enabled=true
    • spring.datasource.druid.fliter.wall.db-type=h2
    • spring.datasource.druid.fliter.wall.config.delete-allow=false
    • spring.datasource.druid.fliter.config.drop-table-allow=false

Druid Filter

  • 用于定制连接池操作的各个环节
  • 可以继承FilterEventAdapter以便方便实现Filter
  • 修改META-INF/druid-filter.properties增加Filter配置

image

连接池选择时的考量点

image

Tags: