最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一篇文章搞定數(shù)據(jù)庫(kù)連接池

 更新時(shí)間:2021年07月14日 17:02:50   作者:香菜聊游戲  
數(shù)據(jù)庫(kù)連接池在編寫(xiě)應(yīng)用服務(wù)是經(jīng)常需要用到的模塊,太過(guò)頻繁的連接數(shù)據(jù)庫(kù)對(duì)服務(wù)性能來(lái)講是一個(gè)瓶頸,使用緩沖池技術(shù)可以來(lái)消除這個(gè)瓶頸,本文就來(lái)介紹Java常見(jiàn)的幾種,感興趣的可以了解一下

1、什么是數(shù)據(jù)庫(kù)連接池

就是一個(gè)容器持有多個(gè)數(shù)據(jù)庫(kù)連接,當(dāng)程序需要操作數(shù)據(jù)庫(kù)的時(shí)候直接從池中取出連接,使用完之后再還回去,和線程池一個(gè)道理。

2、為什么需要連接池,好處是什么?

1、節(jié)省資源,如果每次訪問(wèn)數(shù)據(jù)庫(kù)都創(chuàng)建新的連接,創(chuàng)建和銷毀都浪費(fèi)系統(tǒng)資源

2、響應(yīng)性更好,省去了創(chuàng)建的時(shí)間,響應(yīng)性更好。

3、統(tǒng)一管理數(shù)據(jù)庫(kù)連接,避免因?yàn)闃I(yè)務(wù)的膨脹導(dǎo)致數(shù)據(jù)庫(kù)連接的無(wú)限增多。

4、便于監(jiān)控。

3、都有哪些連接池方案

數(shù)據(jù)庫(kù)連接池的方案有不少,我接觸過(guò)的連接池方案有:

1、C3p0

這個(gè)連接池我很久之前看到過(guò),但是當(dāng)時(shí)自己還很弱小,并沒(méi)有很好的理解,現(xiàn)在用的也很少了,爺爺級(jí)的連接池,可以忽略

2、DBCP (Database Connection Pool)

這個(gè)名字很直白,數(shù)據(jù)庫(kù)連接池,從Tomcat 5.5開(kāi)始,Tomcat 內(nèi)置了DBCP的數(shù)據(jù)源實(shí)現(xiàn),所以可以非常方便地配置DBCP數(shù)據(jù)源。

3、Druid

阿里開(kāi)源的數(shù)據(jù)源,這個(gè)也是前公司使用的數(shù)據(jù)源,Druid能夠提供強(qiáng)大的監(jiān)控和擴(kuò)展功能,強(qiáng)項(xiàng)在于監(jiān)控。

4、HiKariCP

號(hào)稱最快的數(shù)據(jù)庫(kù)連接池,springboot2.0 也已經(jīng)把默認(rèn)的數(shù)據(jù)源改為了HikariCP,強(qiáng)于性能。

4、連接池需要關(guān)注的參數(shù)

看下Druid 的數(shù)據(jù)庫(kù)連接池的配置:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${db.driverClassName}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
<property name="initialSize" value="5"/>
<property name="maxIdle" value="10"/>
<property name="minIdle" value="5"/>
<property name="maxActive" value="15"/>
<property name="removeAbandoned" value="true"/>
<property name="removeAbandonedTimeout" value="180"/>
<property name="maxWait" value="3000"/>
<property name="validationQuery">
<value>SELECT 1</value>
</property>
<property name="testOnBorrow">
<value>true</value>
</property>

1、driverClassName 使用的JDBC驅(qū)動(dòng)的完整有效的Java類名,如連接 mysql com.mysql.cj.jdbc.Driver

2、jdbcUrl 數(shù)據(jù)庫(kù)的連接。如 jdbc:mysql://127.0.0.1:3306/mydatabase

3、username 你懂的,數(shù)據(jù)庫(kù)的用戶名,如 root

4、password 太直白了 ,數(shù)據(jù)庫(kù)的用戶密碼,如 p123456

5、initialSize 連接池創(chuàng)建的時(shí)候,自動(dòng)創(chuàng)建的數(shù)據(jù)庫(kù)連接數(shù)量,建議 10-50足夠

6、maxIdle 最大空閑連接:連接池中允許保持空閑狀態(tài)的最大連接數(shù)量,超過(guò)的空閑連接將被釋放,如果設(shè)置為負(fù)數(shù)表示不限制,建議設(shè)置和 與initialSize相同,減少釋放和創(chuàng)建的性能損耗。

7、minIdle 最小空閑連接:連接池中容許保持空閑狀態(tài)的最小連接數(shù)量,低于這個(gè)數(shù)量將創(chuàng)建新的連接,如果設(shè)置為0則不創(chuàng)建

8、maxActive 最大同時(shí)激活的連接數(shù)量。

9、maxWait 如果連接池中沒(méi)有可用的連接,最大的等待時(shí)間,超時(shí)則沒(méi)有可用連接,單位毫秒,設(shè)置-1時(shí)表示無(wú)限等待,建議設(shè)置為100毫秒

10、testxxx 在對(duì)連接進(jìn)行操作時(shí),是否檢測(cè)連接的有效性,如 testOnBorrow 在申請(qǐng)連接的時(shí)候會(huì)先檢測(cè)連接的有效性,執(zhí)行validationQuery ,建議線上的把此配置設(shè)置為false,因?yàn)闀?huì)影響性能。

11、validationQuery 檢查池中的連接是否仍可用的 SQL 語(yǔ)句,drui會(huì)連接到數(shù)據(jù)庫(kù)執(zhí)行該SQL, 如果正常返回,則表示連接可用,否則表示連接不可用,建議 select 1 from dual

5、怎么創(chuàng)建連接池,show me the code

5.1 pom.xml 加入依賴

  <dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>druid</artifactId>
     <version>1.2.6</version>
   </dependency>

5.2 配置文件

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
    <!-- 基本屬性 url、user、password -->
    <property name="driverClassName" value="${jdbc.driver}" />
    <property name="url" value="${jdbc_url}" />
    <property name="username" value="${jdbc_user}" />
    <property name="password" value="${jdbc_password}" />
    <!-- 配置監(jiān)控統(tǒng)計(jì)攔截的filters -->
    <property name="filters" value="stat" />
    <!-- 配置初始化大小、最小、最大 -->
    <property name="maxActive" value="20" />
    <property name="initialSize" value="1" />
    <property name="minIdle" value="1" />
    <!-- 配置獲取連接等待超時(shí)的時(shí)間 -->
    <property name="maxWait" value="60000" />    
    <!-- 配置間隔多久才進(jìn)行一次檢測(cè),檢測(cè)需要關(guān)閉的空閑連接,單位是毫秒 -->
    <property name="timeBetweenEvictionRunsMillis" value="60000" />
    <!-- 配置一個(gè)連接在池中最小生存的時(shí)間,單位是毫秒 -->
    <property name="minEvictableIdleTimeMillis" value="300000" />
    <property name="testWhileIdle" value="true" />
    <property name="testOnBorrow" value="false" />
    <property name="testOnReturn" value="false" />
    <!-- 打開(kāi)PSCache,并且指定每個(gè)連接上PSCache的大小 -->
    <property name="poolPreparedStatements" value="true" />
    <property name="maxOpenPreparedStatements" value="20" />
</bean>
<!--配置jdbcTemplate,如果userDao沒(méi)有extends JdbcDaoSupport-->
<<bean id="jdbcTemplate" class="com.springframework.jdbc.core.JdbcTemplate">
       <property name="dataSource" ref="dataSource"/>
   </bean>
    <bean id="userDao" class="com.caraway.dao.UserDao">
       <property name="dataSource" ref="jdbcTemplate"/>
   </bean>

5.3 調(diào)用

public static void main(String[] args) {
       ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
       UserDao userDao = (UserDao) context.getBean("userDao");
       User user = new User();
       user.setUsername("香菜");
       user.setPassowrd("root");
       userDao.saveUser(user);
  }

6、總結(jié)

連接池和線程池的道理是一樣的,池化資源,降低生成和銷毀的損耗,提高系統(tǒng)的響應(yīng)。

本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Kotlin 的注解類詳解及實(shí)例

    Kotlin 的注解類詳解及實(shí)例

    這篇文章主要介紹了Kotlin 的注解類詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • springboot集成mybatisPlus+多數(shù)據(jù)源的實(shí)現(xiàn)示例

    springboot集成mybatisPlus+多數(shù)據(jù)源的實(shí)現(xiàn)示例

    這篇文章主要介紹了springboot集成mybatisPlus+多數(shù)據(jù)源的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Zookeeper全局唯一ID生成方案解析

    Zookeeper全局唯一ID生成方案解析

    這篇文章主要介紹了Zookeeper全局唯一ID生成方案解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • SpringCloud的Eureka模塊詳解

    SpringCloud的Eureka模塊詳解

    這篇文章主要介紹了SpringCloud的Eureka模塊詳解,Spring Cloud 封裝了 Netflix 公司開(kāi)發(fā)的 Eureka 模塊來(lái)實(shí)現(xiàn)服務(wù)治理,就是提供了微服務(wù)架構(gòu)中各微服務(wù)實(shí)例的快速上線或下線且保持各服務(wù)能正常通信的能力的方案總稱,需要的朋友可以參考下
    2023-07-07
  • Spring?Boot與Spring?MVC?Spring對(duì)比及核心概念

    Spring?Boot與Spring?MVC?Spring對(duì)比及核心概念

    這篇文章主要為大家介紹了Spring?Boot與Spring?MVC?Spring的對(duì)比以及你需要了解的核心概念,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-03-03
  • Java值得使用Lambda的8個(gè)場(chǎng)景合集

    Java值得使用Lambda的8個(gè)場(chǎng)景合集

    可能對(duì)不少人來(lái)說(shuō),Lambda顯得陌生又復(fù)雜,覺(jué)得Lambda會(huì)導(dǎo)致代碼可讀性下降,但畢竟2023年了,JDK都出了那么多新版本,是時(shí)候試試Lambda了
    2023-08-08
  • java并發(fā)問(wèn)題概述

    java并發(fā)問(wèn)題概述

    這篇文章主要介紹了java并發(fā)問(wèn)題概述,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Springboot傳輸數(shù)據(jù)時(shí)日期格式化問(wèn)題

    Springboot傳輸數(shù)據(jù)時(shí)日期格式化問(wèn)題

    這篇文章主要介紹了Springboot傳輸數(shù)據(jù)時(shí)日期格式化問(wèn)題,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • 如何取消IDEA中的項(xiàng)目和Git倉(cāng)庫(kù)的關(guān)聯(lián)

    如何取消IDEA中的項(xiàng)目和Git倉(cāng)庫(kù)的關(guān)聯(lián)

    這篇文章介紹了一種取消已經(jīng)開(kāi)啟代碼控制的項(xiàng)目與Git倉(cāng)庫(kù)關(guān)聯(lián)的簡(jiǎn)單方法,首先,在IntelliJ IDEA中打開(kāi)項(xiàng)目,刪除.idea目錄下的vcs.xml文件,這樣IDE界面上的Git圖標(biāo)就會(huì)消失,接下來(lái),打開(kāi)項(xiàng)目所在位置,通過(guò)文件管理器啟用“顯示隱藏的項(xiàng)目”選項(xiàng)
    2024-10-10
  • Java 中模仿源碼自定義ArrayList

    Java 中模仿源碼自定義ArrayList

    這篇文章主要介紹了Java 中模仿源碼自定義ArrayList的相關(guān)資料,需要的朋友可以參考下
    2017-03-03

最新評(píng)論

石渠县| 东辽县| 敖汉旗| 得荣县| 手游| 五大连池市| 和硕县| 和硕县| 聂拉木县| 西乡县| 祁门县| 互助| 蒙阴县| 淳安县| 淳安县| 体育| 黔西| 安达市| 三原县| 富阳市| 普宁市| 盐城市| 象州县| 碌曲县| 沧州市| 循化| 长丰县| 绥棱县| 乐山市| 宁强县| 桂东县| 北碚区| 邵武市| 分宜县| 宁夏| 兰州市| 洪江市| 梨树县| 富蕴县| 安义县| 玛曲县|