mybatis配置文件中,数据源的pooled和unpooled的区别

首先我们来看一下mybatis中文网的官方解释:

UNPOOLED– 这个数据源的实现会每次请求时打开和关闭连接。虽然有点慢,但对那些数据库连接可用性要求不高的简单应用程序来说,是一个很好的选择。 性能表现则依赖于使用的数据库,对某些数据库来说,使用连接池并不重要,这个配置就很适合这种情形。UNPOOLED 类型的数据源仅仅需要配置以下 5 种属性:

属性解释
driver这是 JDBC 驱动的 Java 类全限定名(并不是 JDBC 驱动中可能包含的数据源类)。
url这是数据库的 JDBC URL 地址。
username登录数据库的用户名。
password登录数据库的密码。
defaultTransactionIsolationLevel默认的连接事务隔离级别。
defaultNetworkTimeout等待数据库操作完成的默认网络超时时间(单位:毫秒)。查看 java.sql.Connection#setNetworkTimeout() 的 API 文档以获取更多信息。作为可选项,你也可以传递属性给数据库驱动。只需在属性名加上“driver.”前缀即可,例如:driver.encoding=UTF8 ,这将通过 DriverManager.getConnection(url, driverProperties) 方法传递值为 UTF8 的 encoding 属性给数据库驱动。

POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使并发 Web 应用快速响应请求。
除了上述提到 UNPOOLED 下的属性外,还有更多属性用来配置 POOLED 的数据源:

属性解释
poolMaximumActiveConnections在任意时间可存在的活动(正在使用)连接数量,默认值:10
poolMaximumIdleConnections任意时间可能存在的空闲连接数。
poolMaximumCheckoutTime在被强制返回之前,池中连接被检出(checked out)时间,默认值:20000 毫秒(即 20 秒)
poolTimeToWait这是一个底层设置,如果获取连接花费了相当长的时间,连接池会打印状态日志并重新尝试获取一个连接(避免在误配置的情况下一直失败且不打印日志),默认值:20000 毫秒(即 20 秒)。
poolMaximumLocalBadConnectionTolerance这是一个关于坏连接容忍度的底层设置, 作用于每一个尝试从缓存池获取连接的线程。 如果这个线程获取到的是一个坏的连接,那么这个数据源允许这个线程尝试重新获取一个新的连接,但是这个重新尝试的次数不应该超过 poolMaximumIdleConnections 与 poolMaximumLocalBadConnectionTolerance 之和。 默认值:3(新增于 3.4.5)
poolPingQuery发送到数据库的侦测查询,用来检验连接是否正常工作并准备接受请求。默认是“NO PING QUERY SET”,这会导致多数数据库驱动出错时返回恰当的错误消息。
poolPingEnabled是否启用侦测查询。若开启,需要设置 poolPingQuery 属性为一个可执行的 SQL 语句(最好是一个速度非常快的 SQL 语句),默认值:false。
poolPingConnectionsNotUsedFor配置 poolPingQuery 的频率。可以被设置为和数据库连接超时时间一样,来避免不必要的侦测,默认值:0(即所有连接每一时刻都被侦测 — 当然仅当 poolPingEnabled 为 true 时适用)。

相信看了上面的解释多多少少有点头疼,总结一下:

unpooled不使用数据库连接池,每次连接请求都会创建新的Connection连接对象。
.
pooled使用mybatis框架自带数据库连接池,在要使用连接对象时会从数据库连接池中获取Connection连接对象。

在这就得提一下数据库连接池的优点了:

  • java程序执行过程是在jvm中进行的,而jvm和数据库之间每次建立连接都会消耗大量的内存资源,连接对象过多会影响程序的执行效率。
  • 数据库连接池中存放了已经创建的Connection连接对象(可自定义配置数量),而连接对象一般都会设置数量限制,防止建立的Connection对象过多导致数据库服务器崩溃宕机。
  • 当需要获取数据库连接对象的时候直接在数据库连接池当中取,用完连接对象之后归还到池中,当连接对象都被占用时,其他进程只能等待连接对象的释放,再进行连接对象的获取。

所以,一般情况下都会使用pooled类型数据源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值