亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術(shù)文章
文章詳情頁

java數(shù)據(jù)庫(kù)連接池新手入門一篇就夠了,太簡(jiǎn)單了!

瀏覽:46日期:2022-08-11 08:39:30
目錄1、什么是數(shù)據(jù)庫(kù)連接池2、為什么需要連接池,好處是什么?3、都有哪些連接池方案4、連接池需要關(guān)注的參數(shù)5、怎么創(chuàng)建連接池,show me the code6、總結(jié)1、什么是數(shù)據(jù)庫(kù)連接池

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

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

1、節(jié)省資源,如果每次訪問數(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ù)連接的無限增多。

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

3、都有哪些連接池方案

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

1、C3p0

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

2、DBCP (Database Connection Pool)

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

3、Druid

阿里開源的數(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 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></bean>

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ù)量,超過的空閑連接將被釋放,如果設(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 如果連接池中沒有可用的連接,最大的等待時(shí)間,超時(shí)則沒有可用連接,單位毫秒,設(shè)置-1時(shí)表示無限等待,建議設(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 語句,drui會(huì)連接到數(shù)據(jù)庫(kù)執(zhí)行該SQL, 如果正常返回,則表示連接可用,否則表示連接不可用,建議 select 1 from dual

5、怎么創(chuàng)建連接池,show me the code5.1 pom.xml 加入依賴

<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.6</version> </dependency>5.2 配置文件

<bean 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' /> <!-- 打開PSCache,并且指定每個(gè)連接上PSCache的大小 --> <property name='poolPreparedStatements' value='true' /> <property name='maxOpenPreparedStatements' value='20' /></bean><!--配置jdbcTemplate,如果userDao沒有extends JdbcDaoSupport--><<bean class='com.springframework.jdbc.core.JdbcTemplate'> <property name='dataSource' ref='dataSource'/> </bean> <bean 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)。

今天的重點(diǎn)還是要理解線程池的原理,并且記住大部分的配置參數(shù),各個(gè)線程池雖然實(shí)現(xiàn)的細(xì)節(jié)不同,但是道理是相通的,掌握一個(gè)就掌握了所有,舉一反三。

希望大家多多關(guān)注好吧啦網(wǎng)的其他內(nèi)容!

標(biāo)簽: Java
主站蜘蛛池模板: 欧美一区二区三区精品国产 | 国产成人丝袜网站在线看 | 久久国产精品高清一区二区三区 | 色涩亚洲| 国产三级日本三级日产三 | 成人免费黄网站 | 国产成人精品日本亚洲网站 | 免费永久观看美女视频网站网址 | 成人三级视频在线观看 | 国产伦精品一区二区三区无广告 | 久草手机在线观看 | 日韩一级视频 | 18性欧美69| 久久免费视频2 | 国产精品国产精品 | 久久er精品热线免费 | 国产精品亚洲欧美日韩区 | 久久国产精品久久国产片 | 丝袜一级片 | 欧美性色黄大片一级毛片视频 | 成人欧美网站 | 欧美成人毛片免费网站 | a级精品九九九大片免费看 a级毛片免费观看网站 | 色偷偷资源网 | 成年人性网站 | 欧美成人性色生活片天天看 | 日韩欧美久久一区二区 | 久久精品视屏 | 男女乱淫真视频免费一级毛片 | 综合图片亚洲网友自拍10p | 国产网曝手机视频在线观看 | 国产成人性色视频 | 久久精品久久精品久久 | 性生活视频网站 | 久久青草免费免费91线频观看 | 精品国产免费第一区二区 | 亚洲第一男人天堂 | 欧美一级毛片免费网站 | 日韩一区二区免费看 | 农村寡妇一级毛片免费看视频 | 免费看一级视频 |