溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

數(shù)據(jù)庫連接池技術(shù)的原理是什么呢

發(fā)布時間:2021-11-30 09:14:06 來源:億速云 閱讀:120 作者:柒染 欄目:數(shù)據(jù)庫

今天就跟大家聊聊有關(guān)數(shù)據(jù)庫連接池技術(shù)的原理是什么呢,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

應(yīng)用程序直接獲取數(shù)據(jù)庫連接的缺點

用戶每次請求都需要向數(shù)據(jù)庫獲得鏈接,而數(shù)據(jù)庫創(chuàng)建連接通常需要消耗相對較大的資源,創(chuàng)建時間也較長。假設(shè)網(wǎng)站一天10萬訪問量,數(shù)據(jù)庫服務(wù)器就需要創(chuàng)建10萬次連接,極大的浪費數(shù)據(jù)庫的資源,并且極易造成數(shù)據(jù)庫服務(wù)器內(nèi)存溢出、拓機。

數(shù)據(jù)庫連接池的基本概念

所謂的數(shù)據(jù)庫連接池技術(shù),就是用來分配,管理,釋放數(shù)據(jù)庫連接的.你也許會問,好像我直接用JDBC也能夠?qū)崿F(xiàn)這些功能吧。

嗯,你說的沒錯,JDBC確實也可以,但是,你記不記得,我們使用JDBC技術(shù)的時候,每次用完了,是不是都會將連接關(guān)閉;等到下一次再用的時候,是不是都得將數(shù)據(jù)庫連接再打開?

實際上,數(shù)據(jù)庫鏈接資源是十分寶貴的,我們在小型的項目中還看不出來,在高并發(fā)的項目中,你會發(fā)現(xiàn),這樣頻繁的打開和關(guān)閉數(shù)據(jù)庫鏈接是對服務(wù)器的一種摧殘,十分影響效率.

那么,數(shù)據(jù)庫連接池是如何做的呢?

實現(xiàn)思路是這樣的:在每次有訪問的時候,數(shù)據(jù)庫連接池會給用戶分配一個數(shù)據(jù)庫連接,當用戶用完了連接之后,連接池再將連接回收,放回一個連接集合中.

原理就是這樣的,我們來看一下這張圖加深印象:

數(shù)據(jù)庫連接池技術(shù)的原理是什么呢

這樣你可能還是不太清楚,而且,數(shù)據(jù)庫連接池要考慮的東西要比上面說的更復(fù)雜

作用

數(shù)據(jù)庫連接池負責分配、管理和釋放數(shù)據(jù)庫連接,它允許應(yīng)用程序重復(fù)使用一個現(xiàn)有的數(shù)據(jù)庫連接,而不是再重新建立一個;釋放空閑時間超過最大空閑時間的數(shù)據(jù)庫連接來避免因為沒有釋放數(shù)據(jù)庫連接而引起的數(shù)據(jù)庫連接遺漏。這項技術(shù)能明顯提高對數(shù)據(jù)庫操作的性能。

影響因素

數(shù)據(jù)庫連接池在初始化時將創(chuàng)建一定數(shù)量的數(shù)據(jù)庫連接放到連接池中,  這些數(shù)據(jù)庫連接的數(shù)量是由最小數(shù)據(jù)庫連接數(shù)來設(shè)定的.無論這些數(shù)據(jù)庫連接是否被使用,連接池都將一直保證至少擁有這么多的連接數(shù)量.連接池的最大數(shù)據(jù)庫連接數(shù)量限定了這個連接池能占有的最大連接數(shù),當應(yīng)用程序向連接池請求的連接數(shù)超過最大連接數(shù)量時,這些請求將被加入到等待隊列中.

數(shù)據(jù)庫連接池的最小連接數(shù)和最大連接數(shù)的設(shè)置要考慮到以下幾個因素:

  • 最小連接數(shù):是連接池一直保持的數(shù)據(jù)庫連接,所以如果應(yīng)用程序?qū)?shù)據(jù)庫連接的使用量不大,將會有大量的數(shù)據(jù)庫連接資源被浪費.

  • 最大連接數(shù):是連接池能申請的最大連接數(shù),如果數(shù)據(jù)庫連接請求超過次數(shù),后面的數(shù)據(jù)庫連接請求將被加入到等待隊列中,這會影響以后的數(shù)據(jù)庫操作

  • 如果最小連接數(shù)與最大連接數(shù)相差很大:那么最先連接請求將會獲利,之后超過最小連接數(shù)量的連接請求等價于建立一個新的數(shù)據(jù)庫連接.不過,這些大于最小連接數(shù)的數(shù)據(jù)庫連接在使用完不會馬上被釋放,他將被放到連接池中等待重復(fù)使用或是空間超時后被釋放.

原理

連接池基本的思想是在系統(tǒng)初始化的時候,將數(shù)據(jù)庫連接作為對象存儲在內(nèi)存中,當用戶需要訪問數(shù)據(jù)庫時,并非建立一個新的連接,而是從連接池中取出一個已建立的空閑連接對象。使用完畢后,用戶也并非將連接關(guān)閉,而是將連接放回連接池中,以供下一個請求訪問使用。而連接的建立、斷開都由連接池自身來管理。同時,還可以通過設(shè)置連接池的參數(shù)來控制連接池中的初始連接數(shù)、連接的上下限數(shù)以及每個連接的最大使用次數(shù)、最大空閑時間等等。也可以通過其自身的管理機制來監(jiān)視數(shù)據(jù)庫連接的數(shù)量、使用情況等。

看完上述內(nèi)容,你們對數(shù)據(jù)庫連接池技術(shù)的原理是什么呢有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI