您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關數據庫連接池技術的原理是什么呢,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
應用程序直接獲取數據庫連接的缺點
用戶每次請求都需要向數據庫獲得鏈接,而數據庫創建連接通常需要消耗相對較大的資源,創建時間也較長。假設網站一天10萬訪問量,數據庫服務器就需要創建10萬次連接,極大的浪費數據庫的資源,并且極易造成數據庫服務器內存溢出、拓機。
數據庫連接池的基本概念
所謂的數據庫連接池技術,就是用來分配,管理,釋放數據庫連接的.你也許會問,好像我直接用JDBC也能夠實現這些功能吧。
嗯,你說的沒錯,JDBC確實也可以,但是,你記不記得,我們使用JDBC技術的時候,每次用完了,是不是都會將連接關閉;等到下一次再用的時候,是不是都得將數據庫連接再打開?
實際上,數據庫鏈接資源是十分寶貴的,我們在小型的項目中還看不出來,在高并發的項目中,你會發現,這樣頻繁的打開和關閉數據庫鏈接是對服務器的一種摧殘,十分影響效率.
那么,數據庫連接池是如何做的呢?
實現思路是這樣的:在每次有訪問的時候,數據庫連接池會給用戶分配一個數據庫連接,當用戶用完了連接之后,連接池再將連接回收,放回一個連接集合中.
原理就是這樣的,我們來看一下這張圖加深印象:
這樣你可能還是不太清楚,而且,數據庫連接池要考慮的東西要比上面說的更復雜
作用
數據庫連接池負責分配、管理和釋放數據庫連接,它允許應用程序重復使用一個現有的數據庫連接,而不是再重新建立一個;釋放空閑時間超過最大空閑時間的數據庫連接來避免因為沒有釋放數據庫連接而引起的數據庫連接遺漏。這項技術能明顯提高對數據庫操作的性能。
影響因素
數據庫連接池在初始化時將創建一定數量的數據庫連接放到連接池中, 這些數據庫連接的數量是由最小數據庫連接數來設定的.無論這些數據庫連接是否被使用,連接池都將一直保證至少擁有這么多的連接數量.連接池的最大數據庫連接數量限定了這個連接池能占有的最大連接數,當應用程序向連接池請求的連接數超過最大連接數量時,這些請求將被加入到等待隊列中.
數據庫連接池的最小連接數和最大連接數的設置要考慮到以下幾個因素:
最小連接數:是連接池一直保持的數據庫連接,所以如果應用程序對數據庫連接的使用量不大,將會有大量的數據庫連接資源被浪費.
最大連接數:是連接池能申請的最大連接數,如果數據庫連接請求超過次數,后面的數據庫連接請求將被加入到等待隊列中,這會影響以后的數據庫操作
如果最小連接數與最大連接數相差很大:那么最先連接請求將會獲利,之后超過最小連接數量的連接請求等價于建立一個新的數據庫連接.不過,這些大于最小連接數的數據庫連接在使用完不會馬上被釋放,他將被放到連接池中等待重復使用或是空間超時后被釋放.
原理
連接池基本的思想是在系統初始化的時候,將數據庫連接作為對象存儲在內存中,當用戶需要訪問數據庫時,并非建立一個新的連接,而是從連接池中取出一個已建立的空閑連接對象。使用完畢后,用戶也并非將連接關閉,而是將連接放回連接池中,以供下一個請求訪問使用。而連接的建立、斷開都由連接池自身來管理。同時,還可以通過設置連接池的參數來控制連接池中的初始連接數、連接的上下限數以及每個連接的最大使用次數、最大空閑時間等等。也可以通過其自身的管理機制來監視數據庫連接的數量、使用情況等。
看完上述內容,你們對數據庫連接池技術的原理是什么呢有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。