初识数据库链接池 HikariCP

本贴最后更新于 3170 天前,其中的信息可能已经时移世改
  1. Hikari(在日语中意思是:光)
    Fast, simple, reliable. HikariCP is a "zero-overhead" production ready JDBC connection pool. At roughly 90Kb, the library is very light.
    快速,简单,可靠。 HikariCP 是一个零开销的 JDBC 连接池作品,它是非常轻的,大概只有 90kb。详细地址 Simple-bin{O(∩_∩)O 哈哈,我 Fork 到我的 Git 了}。下面性能的测试图:
    HikariCP-bench-2.4.0.png

  2. 使用 HikariCP
    要求:Java7 或者更高版本,slf4j 类库。
    package com.cyb.test;
    import java.sql.Connection;
    import java.sql.SQLException;

    import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; /** * 第一个HikariCP演示例子 * @author Cheng * */ public class FirstHikariCPDemo { //连接池 private HikariDataSource dataSource; /** * * @param className * @param url * @param username * @param password */ public void init(String className,String url,String username,String password){ //连接池配置信息 HikariConfig config = new HikariConfig(); config.setDriverClassName(className); config.setJdbcUrl(url); config.setUsername(username); config.setPassword(password); config.addDataSourceProperty("cachePrepStmts", "true"); config.addDataSourceProperty("prepStmtCacheSize", "250"); config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); //链接池初始化 setDataSource(new HikariDataSource(config)); } //获取链接 public Connection getConnection(){ Connection con = null; try { con = getDataSource().getConnection(); } catch (SQLException e) { e.printStackTrace(); } return con; } //关闭连接池 public void close(){ getDataSource().close(); } public HikariDataSource getDataSource() { return dataSource; } public void setDataSource(HikariDataSource dataSource) { this.dataSource = dataSource; } public static void main(String[] args)throws Exception { FirstHikariCPDemo demo = new FirstHikariCPDemo(); demo.init("com.mysql.jdbc.Driver", "jdbc:mysql://localhost:3306/mango_example", "root", "root"); System.out.println(demo.getConnection().getCatalog()); } }

    如果不使用 HikariConfig,可以直接 new 一个 HikariDataSource 实例,如下所示:

    HikariDataSource ds = new HikariDataSource(); ds.setJdbcUrl("jdbc:mysql://localhost:3306/simpsons"); ds.setUsername("bart"); ds.setPassword("51mp50n");

    或者基于 config.properties 文件如下:

    HikariConfig config = new HikariConfig("config.properties"); HikariDataSource ds = new HikariDataSource(config);

    config.properties 文件的内容如下:

    dataSourceClassName=com.mysql.jdbc.Driver dataSource.user=root dataSource.password=root dataSource.databaseName=mango_example dataSource.portNumber=3306 dataSource.serverName=localhost

    也可以基于 java.util.Properties 进行配置

    Properties props = new Properties(); props.setProperty("dataSourceClassName", "com.mysql.jdbc.Driver"); props.setProperty("dataSource.user", "root"); props.setProperty("dataSource.password", "root"); props.setProperty("dataSource.databaseName", "mango_example"); props.put("dataSource.logWriter", new PrintWriter(System.out)); HikariConfig config = new HikariConfig(props); HikariDataSource ds = new HikariDataSource(config);
  3. spring 配置

    <bean id="dataSourceHikari" class="com.zaxxer.hikari.HikariDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/mango_example?useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="root"/> <!-- 控制自动提交行为 default:true --> <property name="autoCommit" value="true"/> <!--连接池获取的连接是否只读 default:false--> <property name="readOnly" value="false"/> <!--控制连接的事务隔离等级 default:none--> <property name="transactionIsolation" value="none"/> <!--设置catalog以便于支持查看catalogs > <property name="catalog" value="none"/> <!--最大连接超时时间> <property name="connectionTimeout" value="30000"/> <!--最大空闲超时时间 --> <property name="idleTimeout" value="600000"/> <!--连接池中一个连接的最大生命周期 > <property name="maxLifetime" value="1800000 "/> </bean>
  4. Maven 中引入
    Java 7 和 Java 8

    <dependency> <groupId>com.zaxxergroupId> <artifactId>HikariCPartifactId> <version>2.4.7version> </dependency>

    Java 6

    <dependency> <groupId>com.zaxxergroupId> <artifactId>HikariCP-java6artifactId> <version>2.3.13version> </dependency>
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3200 引用 • 8216 回帖
  • HikariCP
    2 引用 • 1 回帖
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    345 引用 • 747 回帖
  • 连接池
    7 引用 • 15 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
SimpleBin
改变自己晴空万里,埋怨别人天昏地暗。 北京

推荐标签 标签

  • 新人

    让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
    新手上路,请谨慎驾驶!

    52 引用 • 228 回帖
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 667 关注
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    730 引用 • 1280 回帖 • 5 关注
  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 375 关注
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖 • 1 关注
  • Sandbox

    如果帖子标签含有 Sandbox ,则该帖子会被视为“测试帖”,主要用于测试社区功能,排查 bug 等,该标签下内容不定期进行清理。

    432 引用 • 1250 回帖 • 596 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 679 关注
  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖 • 1 关注
  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    7 引用 • 27 回帖
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    22 引用 • 22 回帖 • 1 关注
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    325 引用 • 1395 回帖 • 1 关注
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 81 关注
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    345 引用 • 747 回帖
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    70 引用 • 193 回帖 • 411 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖
  • Bootstrap

    Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。

    18 引用 • 33 回帖 • 646 关注
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    174 引用 • 3852 回帖
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    411 引用 • 3588 回帖 • 2 关注
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    54 引用 • 44 回帖 • 1 关注
  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    89 引用 • 122 回帖 • 618 关注
  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    25405 引用 • 104997 回帖
  • 机器学习

    机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

    83 引用 • 37 回帖
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    91 引用 • 384 回帖
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 657 关注
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖 • 1 关注
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    181 引用 • 400 回帖
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    170 引用 • 1529 回帖