亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Java數(shù)據(jù)庫(kù)連接池的原理與應(yīng)用

        2020-04-22 20:37:20劉翠霞
        無(wú)線互聯(lián)科技 2020年4期

        劉翠霞

        摘? ?要:在Java開(kāi)發(fā)中,不可避免地要使用數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)和管理數(shù)據(jù)。尤其是在Java Web應(yīng)用程序中,往往會(huì)有很多用戶同時(shí)連接和訪問(wèn)數(shù)據(jù)庫(kù),對(duì)數(shù)據(jù)庫(kù)連接的管理將直接影響到程序的性能和用戶的體驗(yàn)。使用數(shù)據(jù)庫(kù)連接池能夠加快數(shù)據(jù)庫(kù)連接的速度,提高服務(wù)器程序的性能,降低系統(tǒng)資源的消耗,是對(duì)數(shù)據(jù)庫(kù)連接的一種較為有效的管理手段。文章介紹了數(shù)據(jù)庫(kù)連接池的原理與使用方法。

        關(guān)鍵詞:Java;Java數(shù)據(jù)庫(kù)連接;數(shù)據(jù)庫(kù)連接池

        數(shù)據(jù)庫(kù)(Database)是按照數(shù)據(jù)結(jié)構(gòu)來(lái)組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù),在Java開(kāi)發(fā)中,不可避免地要使用數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)和管理數(shù)據(jù)。傳統(tǒng)的數(shù)據(jù)庫(kù)連接是使用Java數(shù)據(jù)庫(kù)連接(Java Database Connectivity,JDBC)技術(shù),每操作一次數(shù)據(jù)庫(kù)都會(huì)執(zhí)行一次創(chuàng)建和斷開(kāi)連接的操作,這種頻繁的操作十分影響數(shù)據(jù)庫(kù)的訪問(wèn)效率,并且增加了代碼量,所以在實(shí)際開(kāi)發(fā)中通常會(huì)使用連接池技術(shù)來(lái)解決這些問(wèn)題。

        1? ? 數(shù)據(jù)庫(kù)連接池的工作原理

        數(shù)據(jù)庫(kù)連接池(Database Connection Pool,DBCP)是應(yīng)用程序啟動(dòng)時(shí)系統(tǒng)建立足夠的數(shù)據(jù)庫(kù)連接,并將這些連接組成一個(gè)連接池。每次應(yīng)用程序請(qǐng)求數(shù)據(jù)庫(kù)連接時(shí),無(wú)需新建連接,而是從連接池中取出已有的連接使用,使用完畢后,不必關(guān)閉數(shù)據(jù)庫(kù)連接,而是直接將連接歸還給連接池。這樣雖然會(huì)占用一定的內(nèi)存空間,但是卻大大節(jié)省了數(shù)據(jù)庫(kù)連接的時(shí)間,體現(xiàn)了以空間換時(shí)間的思想。數(shù)據(jù)庫(kù)連接池的工作原理主要由以下3部分組成。

        1.1? 建立連接池

        在系統(tǒng)初始化時(shí),利用Vector,Stack等容器建立靜態(tài)的數(shù)據(jù)庫(kù)連接池,根據(jù)配置創(chuàng)建連接并放置在連接池中,這些連接是不能隨意關(guān)閉的,以后所使用的連接都是從該連接池中獲取的,這樣就可以避免反復(fù)建立和關(guān)閉連接造成的開(kāi)銷(xiāo)。

        1.2? 分配、釋放連接

        連接池中的連接由連接池管理器統(tǒng)一管理。當(dāng)客戶請(qǐng)求數(shù)據(jù)庫(kù)連接時(shí),首先看連接池中是否有空閑連接,即尚未分配出去的連接。如果存在空閑連接,則把該連接分配給客戶,并標(biāo)記該連接為已分配。若連接池中沒(méi)有空閑連接,就在已經(jīng)分配出去的連接中尋找一個(gè)合適的連接給客戶,此時(shí)該連接在多個(gè)客戶間復(fù)用。

        當(dāng)客戶釋放連接時(shí),可以根據(jù)該連接是否被復(fù)用進(jìn)行不同的處理。如果沒(méi)有其他使用者,就放入到連接池中,而不是被關(guān)閉。如果有其他使用者,則當(dāng)前客戶釋放該連接,其他客戶可以繼續(xù)使用。

        1.3? 配置連接

        連接池中到底要放置多少個(gè)連接,以及連接耗盡后該如何處理是配置策略要關(guān)注的問(wèn)題。一般的配置策略是,開(kāi)始時(shí),根據(jù)具體的應(yīng)用需求,給出一個(gè)初始的連接池中連接的數(shù)目以及一個(gè)連接池可以擴(kuò)張到的最大連接數(shù)目。連接池管理器在創(chuàng)建、分配、釋放連接時(shí)都需要符合配置要求,當(dāng)客戶請(qǐng)求超過(guò)最大連接數(shù)目時(shí),新請(qǐng)求可能需要一個(gè)短暫的等待過(guò)程。

        2? ? 數(shù)據(jù)庫(kù)連接池的使用(以DBCP連接池為例)

        主流的數(shù)據(jù)庫(kù)連接池有DBCP,C3p0,Tomcat Jdbc Pool,BoneCP,Druid。其中,DBCP是apache上的一個(gè)Java連接池項(xiàng)目。下面以DBCP連接池為例說(shuō)明數(shù)據(jù)庫(kù)連接池的使用[1]。

        2.1? 導(dǎo)入jar包

        單獨(dú)使用DBCP需要導(dǎo)入2個(gè)包:commons-dbcp.jar,commons-pool.jar,如果是Maven項(xiàng)目則需要配置Maven依賴,即在配置文件pom.xml中引入其jar包的坐標(biāo)。

        2.2? 創(chuàng)建數(shù)據(jù)源

        當(dāng)使用DBCP數(shù)據(jù)源時(shí),首先要?jiǎng)?chuàng)建數(shù)據(jù)源對(duì)象,常用的創(chuàng)建方式有兩種。

        2.2.1? 純Java代碼方式

        第一步:創(chuàng)建BasicDataSource類(lèi)對(duì)象

        BasicDataSource datasource=new BasicDataSource();

        第二步:設(shè)置必須的數(shù)據(jù)庫(kù)連接參數(shù)

        datasource.setDriverClassName(“com.mysql.jdbc.Driver”);

        datasource.setUrl(“jdbc:mysql://127.0.0.1:3306/XXX”); //XXX為數(shù)據(jù)庫(kù)的名字

        datasource.setUsername(“root”);

        datasource.setPassword(“root”);

        第三步:設(shè)置可選的數(shù)據(jù)庫(kù)連接策略參數(shù)

        datasource.setInitialSize(10);//初始化的連接數(shù)

        datasource.setMaxActive(50);//最大連接數(shù)

        datasource.setMaxIdle(5);//最大空閑數(shù)

        datasource.setMinIdle(1);//最小空閑數(shù)

        2.2.2? 基于Spring創(chuàng)建

        第一步:編寫(xiě)配置文件。配置文件名以.properties結(jié)尾,最好放在src目錄下。配置文件信息如下:

        driverClassName=com.mysql.jdbc.Driver

        url=jdbc:mysql://127.0.0.1:3306/shop

        username=root

        password=root

        第二步:在spring配置文件中配置DBCP數(shù)據(jù)源。配置文件信息如下:

        2.3? 通過(guò)連接池獲取連接操作數(shù)據(jù)庫(kù)

        Connection conn= dataSource.getConnection();//獲取數(shù)據(jù)庫(kù)連接對(duì)象

        ……//完成數(shù)據(jù)庫(kù)的增刪改查操作

        3? ? 數(shù)據(jù)庫(kù)連接池技術(shù)的優(yōu)勢(shì)

        3.1? 資源復(fù)用

        使用數(shù)據(jù)庫(kù)連接池能夠復(fù)用有限的連接資源,避免了頻繁創(chuàng)建和釋放連接引起的大量性能開(kāi)銷(xiāo)。在減少系統(tǒng)消耗的同時(shí)減少內(nèi)存碎片以及數(shù)據(jù)庫(kù)臨時(shí)進(jìn)程/線程的數(shù)量,增進(jìn)了系統(tǒng)運(yùn)行環(huán)境的平穩(wěn)性。

        3.2? 系統(tǒng)響應(yīng)速度更快

        數(shù)據(jù)庫(kù)連接的初始化工作在數(shù)據(jù)庫(kù)連接池初始化時(shí)已經(jīng)完成,客戶在訪問(wèn)數(shù)據(jù)庫(kù)時(shí)不需要再做初始化工作,直接取得連接即可訪問(wèn)。對(duì)于業(yè)務(wù)請(qǐng)求處理而言,節(jié)約了數(shù)據(jù)庫(kù)連接初始化和釋放過(guò)程的時(shí)間開(kāi)銷(xiāo),從而縮短了系統(tǒng)整體響應(yīng)時(shí)間,優(yōu)化了用戶體驗(yàn)。

        3.3? 資源分配手段更新

        對(duì)于多應(yīng)用共享同一數(shù)據(jù)庫(kù)的Web系統(tǒng)而言,使用數(shù)據(jù)庫(kù)連接池技術(shù),通過(guò)在應(yīng)用層配置數(shù)據(jù)庫(kù)連接,限制某一應(yīng)用最多可以使用的數(shù)據(jù)庫(kù)連接數(shù),避免某一應(yīng)用獨(dú)占所有數(shù)據(jù)庫(kù)資源,優(yōu)化了資源分配,保障多個(gè)應(yīng)用的可用性。

        3.4? 避免數(shù)據(jù)庫(kù)連接泄漏

        使用數(shù)據(jù)庫(kù)連接池技術(shù),可根據(jù)預(yù)先設(shè)定的連接占用時(shí)限,把超時(shí)連接強(qiáng)制收回,從而避免了常規(guī)JDBC操作中由于沒(méi)有及時(shí)關(guān)閉連接而可能出現(xiàn)的資源泄漏,提高了數(shù)據(jù)庫(kù)的安全性。

        4? ? 結(jié)語(yǔ)

        數(shù)據(jù)庫(kù)是后端系統(tǒng)最重要的存儲(chǔ)組件,無(wú)論是C/S架構(gòu)項(xiàng)目還是B/S架構(gòu)項(xiàng)目一般都需要把業(yè)務(wù)數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中,都需要有數(shù)據(jù)庫(kù)存儲(chǔ)和連接技術(shù)的支持。使用數(shù)據(jù)庫(kù)連接池技術(shù),系統(tǒng)啟動(dòng)時(shí)會(huì)預(yù)先創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)連接對(duì)象,這樣雖然會(huì)占用一定的內(nèi)存空間,但是可以省去后面每次操作數(shù)據(jù)庫(kù)時(shí)創(chuàng)建連接和關(guān)閉連接消耗的時(shí)間,是值得推廣使用的技術(shù)。隨著項(xiàng)目需求越來(lái)越復(fù)雜,數(shù)據(jù)量越來(lái)越大,如何有效地提高數(shù)據(jù)庫(kù)操作性能成為一個(gè)重要的研究課題,數(shù)據(jù)庫(kù)連接技術(shù)還需要進(jìn)行深入研究。

        [參考文獻(xiàn)]

        [1]黑馬程序員.Java Web程序設(shè)計(jì)任務(wù)教程[M].北京:人民郵電出版社,2017.

        久久青青草原亚洲av无码麻豆| 99久久久69精品一区二区三区 | 亚洲午夜久久久久中文字幕| 色综合久久五十路人妻| 青青手机在线观看视频| 国产免费av片在线观看| 日日摸夜夜添夜夜添一区二区| 午夜日本理论片最新片| 不卡的高清av一区二区三区| 久久久久人妻精品一区蜜桃| 国产成人美女AV| 五十路一区二区中文字幕| 久久久久久人妻无码| 天天摸日日摸狠狠添| 日韩av中出在线免费播放网站 | 天天躁狠狠躁狠狠躁夜夜躁| 国内自拍偷拍亚洲天堂| 亚洲av永久一区二区三区| 日本熟妇美熟bbw| 亚洲免费观看在线视频| 国产主播一区二区在线观看| 白白色发布免费手机在线视频观看 | 熟妇人妻无码中文字幕老熟妇| 久久亚洲av成人无码国产| 谁有在线观看av中文| 亚洲精品国产成人久久av| 少妇aaa级久久久无码精品片| 最新亚洲人AV日韩一区二区| 亚洲国产综合精品中文| 国产精品乱码人妻一区二区三区| 国产a v无码专区亚洲av| 亚洲免费不卡av网站| 日韩少妇人妻中文视频| 边啃奶头边躁狠狠躁| 欧美性爱一区二区三区无a| 丁香婷婷六月综合缴清| 亚洲成av人片在www| 国产 中文 制服丝袜 另类| 一区二区三区高清视频在线| 国产尤物精品视频| 欧美日韩综合网在线观看|