自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

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

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

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

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

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

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

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

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

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

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

作用

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

影響因素

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

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

  • 最小連接數(shù):是連接池一直保持的數(shù)據(jù)庫連接,所以如果應(yīng)用程序?qū)?shù)據(jù)庫連接的使用量不大,將會(huì)有大量的數(shù)據(jù)庫連接資源被浪費(fèi).
  • 最大連接數(shù):是連接池能申請的最大連接數(shù),如果數(shù)據(jù)庫連接請求超過次數(shù),后面的數(shù)據(jù)庫連接請求將被加入到等待隊(duì)列中,這會(huì)影響以后的數(shù)據(jù)庫操作
  • 如果最小連接數(shù)與最大連接數(shù)相差很大:那么最先連接請求將會(huì)獲利,之后超過最小連接數(shù)量的連接請求等價(jià)于建立一個(gè)新的數(shù)據(jù)庫連接.不過,這些大于最小連接數(shù)的數(shù)據(jù)庫連接在使用完不會(huì)馬上被釋放,他將被放到連接池中等待重復(fù)使用或是空間超時(shí)后被釋放.

原理

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

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2010-03-18 15:09:15

python數(shù)據(jù)庫連接

2011-05-19 09:53:33

數(shù)據(jù)庫連接池

2009-06-24 07:53:47

Hibernate數(shù)據(jù)

2017-06-22 14:13:07

PythonMySQLpymysqlpool

2018-10-10 14:27:34

數(shù)據(jù)庫連接池MySQL

2009-06-16 09:25:31

JBoss配置

2011-08-09 15:25:14

線程池數(shù)據(jù)庫連接池

2018-01-03 14:32:32

2009-07-17 13:32:49

JDBC數(shù)據(jù)庫

2021-08-12 06:52:01

.NET數(shù)據(jù)庫連接池

2020-04-30 14:38:51

數(shù)據(jù)庫連接池線程

2009-07-03 17:37:54

JSP數(shù)據(jù)庫

2009-01-15 09:02:27

JMXJBossJMX監(jiān)控

2009-07-29 09:33:14

ASP.NET數(shù)據(jù)庫連

2025-01-16 10:30:49

2011-07-29 15:11:42

WeblogicOracle數(shù)據(jù)庫連接

2010-03-18 14:55:17

Python數(shù)據(jù)庫連接

2010-10-26 16:15:33

連接Oracle數(shù)據(jù)庫

2023-12-11 08:32:58

數(shù)據(jù)庫DruidDBA

2025-02-07 12:11:52

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)