• SpringBoot那些好用的连接池HikariCP


    HikariCP来自于日语,翻译过来是光的意思,由此可见,连接池非常的快。

    HikariCP是什么

    HikariCP是数据库连接池,而且是号称史上最快的,而且目前来看确实是这样的,SpringBoot2.0也已经采用HikariCP作为默认连接池配置.

    1571219068394

    HikariCP GitHub网址

    HikariCP为什么这么快

    • 字节码级别优化(很多方法通过JavaAssist生成)

      代码量非常小,很多方法都没有写,是通过JavaAssist编译的时候是动态生成的。

    • 大量小改进

      • 用FastStatementList代替ArrayList

      • 无锁集合ConcurrentBag(借鉴了.NET中的ConcurrentBag,在java中实现了自己的ConcurrentBag,对于高并发方面有些优化)

      • 代理类的优化 (比如,用invokestatic代替了invokevirtual)

        [invokestatic通过调用getProxyPreparedStatement静态方法生成了18个操作

        invokevirtual通过ProxyFactory.getProxyPreparedStatement生成15个操作,由此可见。

    在Spring Boot中的配置

    Spring Boot 2.x

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

    Spring Boot 1.x

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

    HikariCP数据源配置源码:

    
    	/**
    	 * Hikari DataSource configuration.
    	 */
    	@Configuration
    	@ConditionalOnClass(HikariDataSource.class)
    	@ConditionalOnMissingBean(DataSource.class)
    	@ConditionalOnProperty(name = "spring.datasource.type",
    			havingValue = "com.zaxxer.hikari.HikariDataSource", matchIfMissing = true)
    	static class Hikari {
    
    		@Bean
    		@ConfigurationProperties(prefix = "spring.datasource.hikari")
    		public HikariDataSource dataSource(DataSourceProperties properties) {
    			HikariDataSource dataSource = createDataSource(properties,
    					HikariDataSource.class);
    			if (StringUtils.hasText(properties.getName())) {
    				dataSource.setPoolName(properties.getName());
    			}
    			return dataSource;
    		}
    
    	}
    
  • 相关阅读:
    函数练习之计算机
    函数练习小程序
    Java—Day5课堂练习
    mysql-用户权限管理
    liunx-tail 实时显示文件内容
    Linux-diff --比较两个文件并输出不同之处
    linux-查找某目录下包含关键字内容的文件
    mysql-允许远程连接
    mysql-基本操作
    liunx-指令
  • 原文地址:https://www.cnblogs.com/zhaokejin/p/15626374.html
Copyright © 2020-2023  润新知