新聞中心
隨著互聯(lián)網(wǎng)的快速發(fā)展,數(shù)據(jù)庫連接池作為一種基礎(chǔ)技術(shù)成為了每個(gè)開發(fā)人員必須掌握的技能。數(shù)據(jù)庫連接池可以提高數(shù)據(jù)庫連接的效率和穩(wěn)定性,特別是在高并發(fā)的情況下,其重要性更加凸顯。然而,不同的數(shù)據(jù)庫連接池在性能和穩(wěn)定性方面有著不同的取舍。在開發(fā)過程中,我們必須根據(jù)應(yīng)用場(chǎng)景選擇最合適的數(shù)據(jù)庫連接池。那么,在性能和穩(wěn)定性兩個(gè)方面,哪個(gè)更重要呢?本文將從不同的角度進(jìn)行分析。

一、性能
如果我們要查詢一條數(shù)據(jù),需要經(jīng)過的步驟如下:應(yīng)用程序發(fā)出請(qǐng)求、Java連接數(shù)據(jù)庫、建立連接、傳輸數(shù)據(jù)、關(guān)閉連接等等。這個(gè)過程很耗費(fèi)時(shí)間,而連接池在連接的建立和關(guān)閉上都要比單獨(dú)進(jìn)行連接要快,這樣就可以在單個(gè)連接和并發(fā)連接之間平衡。因此,性能是連接池最為關(guān)鍵的優(yōu)勢(shì)之一。
1.1 普通連接和連接池的對(duì)比
給定一個(gè)請(qǐng)求,該請(qǐng)求要在五秒鐘內(nèi)從數(shù)據(jù)庫中完成。如果使用普通連接,則查詢步驟如下:
1. 與數(shù)據(jù)庫建立連接(假定需要3秒鐘);
2. 進(jìn)行查詢操作(假定需要2秒鐘);
3. 關(guān)閉連接(假定需要1秒鐘)。
使用連接池的情況下:
1. 從連接池中取得一個(gè)連接(假定需要一秒鐘);
2. 進(jìn)行查詢操作(假定需要2秒鐘);
3. 關(guān)閉連接并返回到連接池中(假定需要一秒鐘)。
通過性能的對(duì)比可以發(fā)現(xiàn),使用連接池的效率要更高。之一種情況需要6秒鐘,而第二種情況只需要4秒鐘。
1.2 數(shù)據(jù)庫連接池的性能對(duì)比
不同的數(shù)據(jù)庫連接池在性能上也有所不同。我們將以Tomcat和HikariCP連接池為例,進(jìn)行性能對(duì)比。
Tomcat連接池是在Tomcat服務(wù)器上的JDBC連接池,它封裝了通用的JDBC操作并提供了功能強(qiáng)大的線程池、連接池等機(jī)制,具有高可擴(kuò)展性和可用性。
HikariCP連接池是一個(gè)非??焖?、輕量級(jí)的連接池,使用Java編寫,內(nèi)置了線程池和快速連接機(jī)制。
測(cè)試環(huán)境:4核Intel?Core?i7-2600CPU @ 3.40GHz,Ubuntu 16.04,上海云棲實(shí)驗(yàn)室。
測(cè)試結(jié)論:HikariCP連接池的讀寫速度更快、連接數(shù)更快。
1.3
性能就像是燃油,直接關(guān)系到汽車的速度。無論是普通連接,還是使用連接池,性能都是開發(fā)人員必須考慮到的問題。并且在連接池的選用上,也需要根據(jù)實(shí)際情況進(jìn)行選擇。
二、穩(wěn)定性
性能是連接池一個(gè)重要的優(yōu)點(diǎn),但穩(wěn)定性同樣重要。當(dāng)數(shù)據(jù)庫運(yùn)行不正常或出現(xiàn)故障時(shí),連接池的穩(wěn)定性就更顯得重要。
2.1 可用性
連接池的可用性根據(jù)數(shù)據(jù)采樣進(jìn)行測(cè)試。我們用Apache JMeter對(duì)Tomcat和HikariCP連接池進(jìn)行測(cè)試,并進(jìn)行數(shù)據(jù)對(duì)比。我們通過三次隨機(jī)請(qǐng)求測(cè)試,測(cè)試結(jié)果如下:
可以看出,HikariCP連接池的錯(cuò)誤處理機(jī)制次數(shù)少于Tomcat連接池,拉近兩者之間的平均響應(yīng)時(shí)間消耗,讓整個(gè)響應(yīng)更加穩(wěn)定。
2.2 連接池的失效和恢復(fù)
要確保數(shù)據(jù)庫連接池的穩(wěn)定性,我們需要進(jìn)行故障測(cè)試和恢復(fù)測(cè)試。
用于測(cè)試HikariCP連接池的簡(jiǎn)單Python腳本在連接中斷和快速恢復(fù)后的響應(yīng)時(shí)間上表現(xiàn)出色。這是因?yàn)镠ikariCP使用了一種名為“不公平”的機(jī)制,這種機(jī)制允許一個(gè)線程阻塞更長(zhǎng)時(shí)間,從而確保更快的Irakesponsetimes。
2.3
穩(wěn)定性就像氣囊,是我們開發(fā)人員不得不考慮的一個(gè)因素。這是因?yàn)槿绻B接池不穩(wěn)定,我們使用數(shù)據(jù)庫的體驗(yàn)就會(huì)很差,甚至可能出現(xiàn)程序中斷等問題,這樣會(huì)對(duì)整個(gè)系統(tǒng)造成極大的影響。
三、 性能和穩(wěn)定性哪個(gè)更重要?
性能和穩(wěn)定性是連接池開發(fā)中最關(guān)鍵的兩個(gè)方面,它們對(duì)應(yīng)的是馬力和安全性。這兩個(gè)因素是互相關(guān)聯(lián)的,不能單純地將二者分開。如果只關(guān)注性能,導(dǎo)致連接池的穩(wěn)定性不足,就像一個(gè)過于強(qiáng)勁的賽車,可能產(chǎn)生各種危險(xiǎn),同時(shí)也會(huì)讓程不停地炸,從而造成整個(gè)系統(tǒng)的崩潰。同理,如果只考慮穩(wěn)定性,可能會(huì)得到一個(gè)過分保守的解決方案,這樣可能會(huì)破壞連接池的性能優(yōu)勢(shì)。
結(jié)論:
盡管性能和穩(wěn)定性的關(guān)系復(fù)雜,但我們?nèi)匀恍枰獙ふ乙粋€(gè)平衡點(diǎn)。我們需要知道什么是穩(wěn)定性,它是我們與用戶共享的安全感,以及什么是性能,它是我們向用戶提供高效Web應(yīng)用程序的方式。我們需要記住,在實(shí)際開發(fā)中,我們需要根據(jù)應(yīng)用程序、數(shù)據(jù)集和場(chǎng)景來選擇最合適的連接池,以確保我們達(dá)到了良好的性能和穩(wěn)定性兩者之間的平衡。
相關(guān)問題拓展閱讀:
- JDBC數(shù)據(jù)庫連接池問題
- 用的proxool的數(shù)據(jù)庫連接池,怎么把cpu占用率降下去
JDBC數(shù)據(jù)庫連接池問題
1.可以
2.可以
3.如果都用一個(gè)Connection,并發(fā)怎么辦,事物怎么處理?
4.同上
5.(DBCP,C0)只是連接池,關(guān)閉連接是在程序中控制的。如果是用spring是在請(qǐng)求結(jié)束時(shí)spring自動(dòng)關(guān)閉的梁此。
6.不是,連接池的姿雀作用就是close連接是不close物理連接。橡冊(cè)迅
7.連接池是web應(yīng)用層面東西。在Web服務(wù)器都關(guān)了,連接池就沒有了啊。
8.同上。
9.“關(guān)閉全部連接”有語義歧義。
用的proxool的數(shù)據(jù)庫連接池,怎么把cpu占用率降下去
更好不要用數(shù)據(jù)庫連接池,而要用Access 2023數(shù)據(jù)庫管理系統(tǒng),它對(duì)中央處理器的占用率比較低。
Access 2023界面。
在Windows 7操作系統(tǒng)下,在Windows 7操作系統(tǒng)中,依次選擇【開始】|【所有程序】|【Microsoft Office】|【Microsoft Access 2023】,便可以啟動(dòng)Access 2023,出現(xiàn)Access數(shù)據(jù)庫的窗口。
在Access 2023窗口中,可以看到Office 2023窗口的常見組成,如標(biāo)題欄、【文件】菜單、功能區(qū)、快速訪問工具欄、更大化按鈕、最小化按鈕、關(guān)閉按鈕、幫助按鈕、滾動(dòng)條和狀態(tài)欄等。這個(gè)窗口中還有一個(gè)導(dǎo)航窗格,相當(dāng)于Access 2023之前的Access版本中的數(shù)據(jù)庫窗口。
導(dǎo)航窗格的使用。
導(dǎo)航窗格可以幫助組織或歸類數(shù)據(jù)庫對(duì)象,并且是打開更改數(shù)據(jù)庫對(duì)象設(shè)計(jì)的主要方式。在打開數(shù)據(jù)庫時(shí),數(shù)據(jù)庫對(duì)象的名稱將顯示在導(dǎo)航窗格中,數(shù)據(jù)庫對(duì)象包括表、窗體、報(bào)表、頁、宏和模塊。導(dǎo)航窗格把數(shù)據(jù)庫對(duì)象劃分為幾個(gè)類別,各個(gè)類別又分為幾個(gè)組。
選項(xiàng)卡式文檔的裂肢使用。
Access 2023用選項(xiàng)卡式文檔顯示數(shù)據(jù)庫對(duì)象,而不是數(shù)據(jù)庫窗口。為了便于日常的交互使用,采用選項(xiàng)卡式文檔界面將更加方便。
創(chuàng)建空白數(shù)據(jù)庫。
利用Access 2023創(chuàng)建的數(shù)據(jù)庫屬于關(guān)系型數(shù)據(jù)庫,是相關(guān)對(duì)象的,包括表、查詢、窗體、報(bào)表、宏、模塊和數(shù)據(jù)訪問頁。每個(gè)對(duì)象都是數(shù)據(jù)庫中的一個(gè)組成部分。表是數(shù)據(jù)庫的,記錄了數(shù)據(jù)庫中全部的數(shù)據(jù)內(nèi)容,其它對(duì)象是Access提供的工具,用來對(duì)數(shù)據(jù)庫進(jìn)行維護(hù)和管理。
在Access 2023中,所謂空白數(shù)據(jù)庫,指的是一個(gè)沒有表、查詢和報(bào)表等內(nèi)容的數(shù)據(jù)庫。
啟動(dòng)Access 2023,單擊【文件】菜單,選擇【新建】命令,在右側(cè)的皮枝可用模板中選燃源敏擇【空數(shù)據(jù)庫】按鈕,單擊【文件名】右側(cè)的按鈕,打開【文件新建數(shù)據(jù)庫】對(duì)話框,在對(duì)話框中選擇保存新文檔的文件夾,單擊【確定】按鈕。
在【文件名】文本框中輸入新建的數(shù)據(jù)庫名,單擊【創(chuàng)建】按鈕即可創(chuàng)建一個(gè)空白數(shù)據(jù)庫。
現(xiàn)在常用的開源數(shù)據(jù)庫連接池主要有c3p0、dbcp、proxool三種,其中:
Spring推薦使用dbcp;
Hibernate 推薦使用c3p0和proxool;
1、 DBCP:apache
DBCP(DataBase connection pool)數(shù)據(jù)庫連接池。是apache上的一個(gè) java連接池項(xiàng)目,也是 tomcat使用的連接池組件。單獨(dú)使用dbcp需要3個(gè)包:common-dbcp.jar,common-pool.jar,common-collections.jar由于建立數(shù)據(jù)庫連接是一個(gè)非常耗時(shí)耗資源的行為,所以通過連接池預(yù)先同數(shù)據(jù)庫建立一些連接,放在內(nèi)存中,應(yīng)用程序需要建立數(shù)據(jù)庫連接時(shí)直接到連接池中申請(qǐng)一個(gè)就行,用完后再放回去。dbcp沒有自動(dòng)的去回收空閑連接的功能。
2、 C0:
C0是一個(gè)開源的jdbc連接池,它實(shí)現(xiàn)了數(shù)據(jù)源和jndi綁定,支持jdbc3規(guī)范和jdbc2的標(biāo)準(zhǔn)擴(kuò)展。c3p0是異步操作的,緩慢的jdbc操作通過幫助進(jìn)程完成。磨凳散擴(kuò)展這些操作可以有效的提升性能。目前使用它的開源項(xiàng)目有Hibernate,Spring等。c3p0有自動(dòng)回收空閑連接功能。
3、 Proxool:Sourceforge
Proxool是一種Java數(shù)據(jù)庫連接池技術(shù)。是sourceforge下的一個(gè)開源項(xiàng)目,這個(gè)項(xiàng)目提供一個(gè)健壯、易用的連接池,最為關(guān)鍵的是這個(gè)連接池提供監(jiān)控的功能,方便易用,便于發(fā)現(xiàn)連接泄漏的情況。
對(duì)比:
1> 相同時(shí)間內(nèi)同等量的線程數(shù)和循環(huán)次數(shù)下:通過對(duì)三個(gè)連接池的三個(gè)標(biāo)志性性能測(cè)試參數(shù)(Average,median,90%Line)進(jìn)行比較發(fā)現(xiàn):性能dbcp粗枝 不同情況下的同一數(shù)據(jù)庫連接池測(cè)試:通過觀察 Average,median,90%Line三瞎氏個(gè)參數(shù)發(fā)
現(xiàn)三個(gè)連接池的穩(wěn)定性(三種連接池的三個(gè)測(cè)試參數(shù)的變化情況)依次:穩(wěn)定性dbcp>=c3p0>proxool。
結(jié)論:
通過對(duì)三種數(shù)據(jù)庫連接池的性能測(cè)試發(fā)現(xiàn),proxool和 c3p0能夠更好的支持高并發(fā),但是在穩(wěn)定性方面略遜于 dpcp;
關(guān)于數(shù)據(jù)庫連接池比較的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
網(wǎng)頁題目:比較不同數(shù)據(jù)庫連接池的優(yōu)劣:性能與穩(wěn)定性哪個(gè)更重要?(數(shù)據(jù)庫連接池比較)
網(wǎng)站URL:http://www.5511xx.com/article/djespih.html


咨詢
建站咨詢
