spring boot使用Druid和监控配置(数据库连接池)

    xiaoxiao2023-11-05  173

    性能测试:

    各连接池性能测试:https://blog.csdn.net/qq_31125793/article/details/51241943

    推荐hikari的理由:https://blog.csdn.net/zxl315/article/details/80420688

    测试结论

       1:性能方面 hikariCP>druid>tomcat-jdbc>dbcp>c3p0 。hikariCP的高性能得益于最大限度的避免锁竞争。

       2:druid功能最为全面,sql拦截等功能,统计数据较为全面,具有良好的扩展性。

       3:综合性能,扩展性等方面,可考虑使用druid或者hikariCP连接池。

       4:可开启prepareStatement缓存,对性能会有大概20%的提升。

    Springboot2.0以后默认数据库连接池选择了Hikari(性能高)

    Hikari只有130kb大小,速度超快,稳定性,可靠性,druid对数据源进行了监控。


    注意:spring-boot-starter-web里面没有数据库连接池jar包,数据库连接池的jar包在spring-boot-starter-jdbc里面

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

     

    使用默认数据库连接池(Hikari)

    步骤一:起步依赖

    <!--jdbc起步依赖--> <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- mysql数据库驱动 --> <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId> </dependency>

    步骤二:数据库连接信息配置

    # jdbc_config datasource spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://127.0.0.1:3306/datebook?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull spring.datasource.username=root spring.datasource.password=root # Hikari will use the above plus the following to setup connection pooling spring.datasource.type=com.zaxxer.hikari.HikariDataSource spring.datasource.hikari.minimum-idle=5 spring.datasource.hikari.maximum-pool-size=15 spring.datasource.hikari.auto-commit=true spring.datasource.hikari.idle-timeout=30000 spring.datasource.hikari.pool-name=DatebookHikariCP spring.datasource.hikari.max-lifetime=1800000 spring.datasource.hikari.connection-timeout=30000 spring.datasource.hikari.connection-test-query=SELECT 1

    整合为数据库连接池为druid

    第一步:起步依赖

    <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!--mysql驱动--> <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId> </dependency> <!-- 阿里druid数据库连接池依赖 --> <dependency>     <groupId>com.alibaba</groupId>     <artifactId>druid-spring-boot-starter</artifactId>     <version>1.1.10</version> </dependency>

    第二步:数据库信息配置application.yml

    ###数据库连接信息 spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://127.0.0.1:3306/db_mp?useUnicode=true&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=root spring.datasource.type=com.alibaba.druid.pool.DruidDataSource servertime   #####数据库连接池配置信息 spring.datasource.druid.filters= stat spring.datasource.druid.initial-size=10 spring.datasource.druid.max-active=20 spring.datasource.druid.min-idle=8

    第三步:测试

    @RestController public class HelloController {       @Autowired     private DataSource dataSource;       @RequestMapping("/datasource")     public String dataSource(){         return dataSource.toString();     } }

     

    如果在测试中报如下错误:

    1

    The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized

    解决办法: 

    1

    set global time_zone='+8:00';

    第四步:查看druid监控工具

    直接访问地址:http://localhost:8080/druid/index.html 

    整合durid以及设置监控页面的密码: https://blog.csdn.net/snakemoving/article/details/76285717

    最新回复(0)