當前位置:首頁 » 數據倉庫 » 資料庫連接池屬性
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

資料庫連接池屬性

發布時間: 2023-04-29 16:53:36

① Mysql資料庫連接池如何配置

連接先建立一些連接,並且這些連接允許共享,因此這樣就節省了每次連接的時間開銷。Mysql資料庫為例,連接池在Tomcat中的配置與使用。
1、創建資料庫Student,表student
2、配置server.xml文件。Tomcat安裝目錄下conf中server.xml文件。
<GlobalNamingResources>
<Resource
name="jdbc/DBPool"
type="javax.sql.DataSource"
password=""
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://localhost:3306/student"
maxActive="3"
/>
</GlobalNamingResources>
name:指定連接池的名稱
type:指定連接池的類,他負責連接池的事務處理
url:指定要連接的資料庫
driverClassName:指定連接資料庫使用的驅動程序
username:資料庫用戶名
password:資料庫密碼
maxWait:指定最大建立連接等待時間,如果超過此時間將接到異常
maxIdle:指定連接池中連接的最大空閑數
maxActive:指定連接池最大連接數
3、配置web.xml文件。
<web-app>
<resource-ref>
<description>mysql資料庫連接池配置</description>
<res-ref-name>jdbc/DBPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</web-app>
4、配置context.xml文件
與server.xml文件所在的位置相同。
<Context>
<ResourceLink
name="jdbc/DBPool"
type="javax.sql.DataSource"
global="jdbc/DBPool"
/>
</Context>
5、測試
DataSource pool = null;
Context env = null;
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try{
env = (Context)new InitialContext().lookup("java:comp/env");
//檢索指定的對象,返回此上下文的一個新實例
pool = (DataSource)env.lookup("jdbc/DBPool");
//獲得資料庫連接池
if(pool==null){out.printl("找不到指定的連接池!");}
con = pool.getConnection();
st = con.createStatement();
rs = st.executeQuery("select * from student");
}catch(Exception ex){out.printl(ne.toString());}

② spring連接池配置詳解

資料庫連接池概述

資料庫連接是一種關鍵的有限的昂貴的資源 這一點在多用戶的網頁應用程序中體現得尤為突出 對資料庫連接的管理能顯著影響到整個應用程序的伸縮性和健壯性 影響到程序的性能指標 資料庫連接池正是針對這個問題提出來的

資料庫連接池負責分配 管理和釋放資料庫或碰毀連接 它允許應用程序重復使用一個現有的資料庫連接 而再不是重新建立一個 釋放空閑時間超過最大空閑時間的資料庫連吵返接來避免因為沒有釋放資料庫連接而引起的資料庫連接遺漏 這項技術能明顯提高對資料庫操作的性能

資料庫連接池在初始化時將創建一定數量的資料庫連接放到連接池中 這些資料庫連接的數量是由最小資料庫連接數來設定的 無論這些資料庫連接是否被使用 連接池都將一直保證至少擁有這么多的連接數量 連接池的最大資料庫連接數量限定了這個連接池能佔有的最大連接數 當應用程序向連接池請求的連接數超過最大連接數量時 這些請求將被加入到等待隊列中 資料庫連接池的最小連接數和最大連接數的設置要考慮到下列幾個因素

) 最小連接數是連接池一直保持的資料庫連接 所以如果應用程序對資料庫連接的使用量不大 將會有大量的資料庫連接資源被浪費

) 最大連接數是連接池能申請的最大連接數 如果資料庫連接請求超過此數 後面的資料庫連接請求將被加入到等待隊列中 這會影響之後的資料庫操作

) 如果最小連接數與最大連接數相差太大 那麼最先的連接請求將會獲利 之後超過最小連接數量的連接請求等價於建立一個新的資料庫連接 不過 這些大於最小連接數的資料庫連接在使用完不會馬上被釋放 它將被放到連接池中等待重復使用或是空閑超時後被釋放

目前常用的連接池有 C P DBCP Proxool

網上的評價是

C P 比較耗費資源 效率方面可能要低一點

DBCP在實踐中存在BUG 在某些種情會產生很多空連接不能釋放 Hibernate 已經放棄了對其的支持

Proxool的負面評價較少 現在比較推薦它 而且它還提供即時監控連接池狀態的功能 便於發現連接泄漏的情況

配置如下

在spring配置文件中 一般在applicationContext xml中

<bean id= DataSource class= logicalcobwebs proxool ProxoolDataSource destroy method= shutdown >

<衫備property name= driver >

<value>oracle jdbc driver OracleDriver</value>

</property>

<property name= driverUrl >

<value>jdbc:oracle:thin:xxxx/xxxx@ XX: :server</value>

</property>

<property name= user >

<value>xxxx</value>

</property>

<property name= password >

<value>xxxx</value>

</property>

<property name= alias >

<value>server</value>

</property>

<property name= houseKeepingSleepTime >

<value> </value>

</property>

<property name= houseKeepingTestSql >

<value>select from al</value>

</property>

<property name= testBeforeUse >

<value>true</value>

</property>

<property name= testAfterUse >

<value>true</value>

</property>

<property name= prototypeCount >

<value> </value>

</property>

<property name= maximumConnectionCount >

<value> </value>

</property>

<property name= minimumConnectionCount >

<value> </value>

</property>

<property name= statistics >

<value> m m d</value>

</property>

<property name= statisticsLogLevel >

<value>ERROR</value>

</property>

<property name= trace >

<value>true</value>

</property>

<property name= verbose >

<value>false</value>

</property>

<property name= simultaneousBuildThrottle >

<value> </value>

</property>

<property name= maximumActiveTime >

<value> </value>

</property>

<property name= jmx >

<value>false</value>

</property>

</bean>

然後注入到sessionFactory中

<bean id= sessionFactory class= springframework orm hibernate LocalSessionFactoryBean >

<property name= dataSource ref= DataSource />

</bean>

屬性列表說明:

fatal sql exception: 它是一個逗號分割的信息片段 當一個SQL異常發生時 他的異常信息將與這個信息片段進行比較 如果在片段中存在 那麼這個異常將被認為是個致命錯誤(Fatal SQL Exception ) 這種情況下 資料庫連接將要被放棄 無論發生什麼 這個異常將會被重擲以提供給消費者 用戶最好自己配置一個不同的異常來拋出

fatal sql exception wrapper class:正如上面所說 你最好配置一個不同的異常來重擲 利用這個屬性 用戶可以包裝SQLException 使他變成另外一個異常 這個異常或者繼承QLException或者繼承字RuntimeException proxool自帶了 個實現: logicalcobwebs proxool FatalSQLException 和 logicalcobwebs proxool FatalRuntimeException 後者更合適

house keeping sleep time: house keeper 保留線程處於睡眠狀態的最長時間 house keeper 的職責就是檢查各個連接的狀態 並判斷是否需要銷毀或者創建

house keeping test sql: 如果發現了空閑的資料庫連接 house keeper 將會用這個語句來測試 這個語句最好非常快的被執行 如果沒有定義 測試過程將會被忽略

injectable connection interface: 允許proxool實現被代理的connection對象的方法

injectable statement interface: 允許proxool實現被代理的Statement 對象方法

injectable prepared statement interface: 允許proxool實現被代理的PreparedStatement 對象方法

injectable callable statement interface: 允許proxool實現被代理的CallableStatement 對象方法

jmx: 如果屬性為true 就會注冊一個消息Bean到jms服務 消息Bean對象名: Proxool:type=Pool name=<alias> 默認值為false

jmx agent id: 一個逗號分隔的JMX代理列表(如使用MBeanServerFactory findMBeanServer(String agentId)注冊的連接池 )這個屬性是僅當 jmx 屬性設置為 true 才有效 所有注冊jmx伺服器使用這個屬性是不確定的

jndi name: 數據源的名稱

maximum active time: 如果housekeeper 檢測到某個線程的活動時間大於這個數值 它將會殺掉這個線程 所以確認一下你的伺服器的帶寬 然後定一個合適的值 默認是 分鍾

maximum connection count: 最大的資料庫連接數

maximum connection lifetime: 一個線程的最大壽命

minimum connection count: 最小的資料庫連接數

overload without refusal lifetime: 這可以幫助我們確定連接池的狀態 如果我們已經拒絕了一個連接在這個設定值(毫秒) 然後被認為是超載 默認為 秒

prototype count: 連接池中可用的連接數量 如果當前的連接池中的連接少於這個數值 新的連接將被建立(假設沒有超過最大可用數) 例如 我們有 個活動連接 個可用連接 而我們的prototype count是 那麼資料庫連接池將試圖建立另外 個連接 這和 minimum connection count不同 minimum connection count把活動的連接也計算在內 prototype count 是spare connections 的數量

recently started threshold: 這可以幫助我們確定連接池的狀態 連接數少還是多或超載 只要至少有一個連接已開始在此值(毫秒)內 或者有一些多餘的可用連接 那麼我們假設連接池是開啟的 默認為 秒

simultaneous build throttle: 這是我們可一次建立的最大連接數 那就是新增的連接請求 但還沒有可供使用的連接 由於連接可以使用多線程 在有限的時間之間建立聯系從而帶來可用連接 但是我們需要通過一些方式確認一些線程並不是立即響應連接請求的 默認是

statistics: 連接池使用狀況統計 參數 s m d

statistics log level: 日誌統計跟蹤類型 參數 ERROR 或 INFO

test before use: 如果為true 在每個連接被測試前都會服務這個連接 如果一個連接失敗 那麼將被丟棄 另一個連接將會被處理 如果所有連接都失敗 一個新的連接將會被建立 否則將會拋出一個SQLException異常

test after use: 如果為true 在每個連接被測試後都會服務這個連接 使其回到連接池中 如果連接失敗 那麼將被廢棄

trace: 如果為true 那麼每個被執行的SQL語句將會在執行期被log記錄(DEBUG LEVEL) 你也可以注冊一個ConnectionListener (參看ProxoolFacade)得到這些信息

lishixin/Article/program/Java/ky/201311/28572

③ 什麼是資料庫連接池,有什麼作用

資料庫連接是一種有限的昂貴的資源,
資料庫連接影響到程序的性能指標。
資料庫連接池正是針對這個問題提出來的。資料庫連接池負責分配、
管理和釋放資料庫連接,
它允許應用程序重復使用一個現有的資料庫連接,
而再不是重新建立一個;
釋放空閑時間超過最大空閑時間的資料庫連接來避免因為沒有釋放數
據庫連接而引起的資料庫連接遺漏。
這項技術能明顯提高對資料庫操作的性能。

④ MySQL與Redis資料庫連接池介紹(圖示+源碼+代碼演示)

資料庫連接池(Connection pooling)是程序啟動時建立足夠的資料庫連接,並將這些連接組成一個連接池,由程序動態地對池中的連接進行申請,使用,釋放。

簡單的說:創建資料庫連接是一個很耗時的操作,也容易對資料庫造成安全隱患。所以,在程序初始化的時候,集中創建多個資料庫連接,並把他們集中管理,供程序使用,可以保證較快的資料庫讀寫速度,還更加安全可靠。

不使用資料庫連接池

如果不使用資料庫連接池,對於每一次SQL操作,都要走一遍下面完整的流程:

1.TCP建立連接的三次握手(客戶端與 MySQL伺服器的連接基於TCP協議)

2.MySQL認證的三次我收

3.真正的SQL執行

4.MySQL的關閉

5.TCP的四次握手關閉

可以看出來,為了執行一條SQL,需要進行大量的初始化與關閉操作

使用資料庫連接池

如果使用資料庫連接池,那麼會 事先申請(初始化)好 相關的資料庫連接,然後在之後的SQL操作中會復用這些資料庫連接,操作結束之後資料庫也不會斷開連接,而是將資料庫對象放回到資料庫連接池中

資源重用:由於資料庫連接得到重用,避免了頻繁的創建、釋放連接引起的性能開銷,在減少系統消耗的基礎上,另一方面也增進了系統運行環境的平穩性(減少內存碎片以及資料庫臨時進程/線程的數量)。

更快的系統響應速度:資料庫連接池在初始化過程中,往往已經創建了若干資料庫連接置於池中備用。 此時連接的初始化工作均已完成。對於業務請求處理而言,直接利用現有可用連接,避免了從資料庫連接初始化和釋放過程的開銷,從而縮減了系統整體響應時間。

統一的連接管理,避免資料庫連接泄露:在較為完備的資料庫連接池實現中,可根據預先的連接佔用超時設定,強制收回被佔用連接。從而避免了常規資料庫連接操作中可能出現的資源泄露。

如果說你的伺服器CPU是4核i7的,連接池大小應該為((4*2)+1)=9

相關視頻推薦

90分鍾搞懂資料庫連接池技術|linux後台開發

《tcp/ip詳解卷一》: 150行代碼拉開協議棧實現的篇章

學習地址:C/C++Linux伺服器開發/後台架構師【零聲教育】-學習視頻教程-騰訊課堂

需要C/C++ Linux伺服器架構師學習資料加qun 812855908 獲取(資料包括 C/C++,Linux,golang技術,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒體,CDN,P2P,K8S,Docker,TCP/IP,協程,DPDK,ffmpeg 等),免費分享

源碼下載

下載方式:https://github.com/dongyusheng/csdn-code/tree/master/db_pool(Github中下載)

db_pool目錄下有兩個目錄,mysql_pool目錄為MySQL連接池代碼,redis_pool為redis連接池代碼

下面介紹mysql_pool

CDBConn解析

概念: 代表一個數據連接對象實例

相關成員:

m_pDBPool:該資料庫連接對象所屬的資料庫連接池

構造函數: 綁定自己所屬於哪個資料庫連接池

Init()函數: 創建資料庫連接句柄

CDBPool解析

概念:代表一個資料庫連接池

相關成員:

Init()函數:常見指定數量的資料庫實例句柄,然後添加到m_free_list中,供後面使用

GetDBConn()函數: 用於從空閑隊列中返回可以使用的資料庫連接句柄

RelDBConn()函數: 程序使用完該資料庫句柄之後,將句柄放回到空閑隊列中

測試之前,將代碼中的資料庫地址、埠、賬號密碼等改為自己的(代碼中有好幾處)

進入MySQL, 創建mysql_pool_test資料庫

進入到mysql_pool目錄下, 創建一個build目錄並進入

然後輸入如下的命令進行編譯

之後就會在目錄下生成如下的可執行文件

輸入如下兩條命令進行測試: 可以看到不使用資料庫連接池,整個操作耗時4秒左右;使用連接池之後,整個操作耗時2秒左右,提升了一倍

源碼下載

下面介紹redis_pool

測試

進入到redis_pool目錄下, 創建一個build目錄並進入

然後輸入如下的命令進行編譯

之後就會在目錄下生成如下的可執行文件

輸入如下的命令進行測試: 可以看到不使用資料庫連接池,整個操作耗時182ms;使用連接池之後,整個操作耗時21ms,提升了很多

進入redis,可以看到我們新建的key:

⑤ ssm框架中怎麼配置資料庫連接池

Druid配置
1.下載jar包:http://repo1.maven.org/maven2/com/alibaba/druid/
2.編寫資料庫連接的資源文件:dbconfig.properties
url:jdbc:mysql://localhost:3306/flm?useUnicode=true&characterEncoding=utf8
driverClassName:com.mysql.jdbc.Driver
username:root
password:root

#------------------------------------------------------------------------------------------
#配置擴展插件 監控統計用filters:stat 日誌用filters:log4j 防禦sql注入用filters:wall
filters:stat

#最大連接池數量 初始化建立物理連接的個數 獲取連接時最長的等待時間 最小連接池數量 maxIdle已經棄用
maxActive:20
initialSize:1
maxWait:60000
minIdle:10
maxIdle:15

#有兩個含義 1.Destroy 線程會檢測連接的時間 2.testWhileIdle的判斷依據
timeBetweenEvictionRunsMillis:60000

#Destory線程中如果檢測到當前連接的最後活躍時間和當前時間的差值大於minEvictableIdleTimeMillis,則關閉當前連接
minEvictableIdleTimeMillis:300000

#用來檢測連接是否的sql,要求是一個查詢語句。在mysql中通常設置為SELECT 'X'
validationQuery:SELECT 'x'

#申請連接的時候檢測,如果空閑時間大於timeBetweenEvictionRunsMillis,執行validationQuery連接是否有效
testWhileIdle:true

#申請連接時執行validationQuery檢測連接是否有效 這個配置會降低性能
testOnBorrow:false

#歸還連接時執行validationQuery檢測連接是否有效 這個配置會降低性能
testOnReturn:false

#要啟用PSCache,必須配置大於0,當大於0時,poolPreparedStatements自動觸發修改為true
maxOpenPreparedStatements:20

#對於建立連接超過removeAbandonedTimeout的連接強制關閉
removeAbandoned:true

#指定連接建立多長就被強制關閉
removeAbandonedTimeout:1800

#指定發生removeabandoned時,是否記錄當前線程的堆棧信息到日誌中
logAbandoned:true
04142434445460414243444546

3.在Spring配置文件ApplicationContext.xml中載入資源文件進來
<!--PropertyPlaceholderConfigurer是個bean工廠後置處理器的實現,也就是 BeanFactoryPostProcessor介面的一個實現。PropertyPlaceholderConfigurer可以將上下文(配置文 件)中的屬性值放在另一個單獨的標准java Properties文件中去。-->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/WEB-INF/classes/dbconfig.properties</value> <!--dbconfig.properties 資料庫連接信息-->
</list>
</property>
</bean> 1234567812345678

4.在Spring配置文件ApplicationContext.xml中配置阿里數據連接池Druid

<!-- 阿里 druid資料庫連接池 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<!-- 資料庫基本信息配置 -->
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
<property name="driverClassName" value="${driverClassName}" />
<property name="filters" value="${filters}" />
<!-- 最大並發連接數 -->
<property name="maxActive" value="${maxActive}" />
<!-- 初始化連接數量 -->
<property name="initialSize" value="${initialSize}" />
<!-- 配置獲取連接等待超時的時間 -->
<property name="maxWait" value="${maxWait}" />
<!-- 最小空閑連接數 -->
<property name="minIdle" value="${minIdle}" />
<!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}" />
<!-- 配置一個連接在池中最小生存的時間,單位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="${minEvictableIdleTimeMillis}" />
<property name="validationQuery" value="${validationQuery}" />
<property name="testWhileIdle" value="${testWhileIdle}" />
<property name="testOnBorrow" value="${testOnBorrow}" />
<property name="testOnReturn" value="${testOnReturn}" />
<property name="maxOpenPreparedStatements" value="${maxOpenPreparedStatements}" />
<!-- 打開removeAbandoned功能 -->
<property name="removeAbandoned" value="${removeAbandoned}" />
<!-- 1800秒,也就是30分鍾 -->
<property name="removeAbandonedTimeout" value="${removeAbandonedTimeout}" />
<!-- 關閉abanded連接時輸出錯誤日誌 -->
<property name="logAbandoned" value="${logAbandoned}" />
</bean>

⑥ 資料庫連接池最大個數的影響

池是一個很普遍的概念,和衫拆緩沖存儲有機制相近的地方,都是縮減了訪問的環節,但它更注重於資源的共享。

對於訪問資料庫來說,建立連接的代價比較昂貴,因此,我們有必要建立"連接池"以提高訪問的性能。我們可以把連接當作對象或者設備,池中又有許多已經建立的連接,訪問本來需要與資料庫的連接的地方,都改為和池相連,池臨時分配連接供訪問使用,結果返回後,訪問將連接交還。

JDBC 1.0標准及其擴展中沒有定義連接池,而在JDBC 2.0標準的擴展中定義了或戚棗與連接池相關的介面。與介面對應的類由應用伺服器廠商實現,你可在對伺服器的管理過程中調節某個資料庫連接池的參數。

下面列舉了和連接池有仔明關的屬性(含資料庫連接池最大個數的影響):
Minimum Pool Size 池中保持的連接的最小數目;有新的請求,且沒有激活連接可供使用時,池中連接數將增大,到最大連接數為止
Maximum Pool Size 池中保持的連接的最大數目;當這個數目達到,且沒有激活連接可供使用時,新的請求將等待
Connection Timeout 當連接數達到最大值,且激活連接都在被使用時,新的請求等待的時間
Idle Timeout 連接可在池中閑置的時間;超過將釋放資源,到最小連接數為止
Orphan Timeout 連接在被應用控制時,可閑置的時間;超過將返回池中

⑦ 解釋下資料庫連接池

odbc,jdbc是不同的資料庫連接方式,好比插頭的兩項和三項,都是用於連接資料庫的,java的資料庫連接方式有4種,最常用的是JDBC.
oracle.jdbc.driver.OracleDriver是專門為特定的資料庫編寫的驅動類。jdbc提供了一個統一的介面,各個資料庫提供商針對jdbc的標准寫自己的資料庫驅動。

因差伏為每次請求資料庫都需要耗費時間進行連接配旦,好比每次都要拔插頭、虛賣攜插插頭,非常耗費時間,因此把特定的連接放在一個容器里進行管理,連接池裡的設置就有連接數量這一項,除了這個還有最大連接時間,超過這個時間,連接池就會斷開資料庫連接回滾操作。

所以連接池就是用於管理多個連接,軟體開發的時候只需要向連接池提交請求就好了。

⑧ Tomcat 的資料庫連接池設置與應用

.將資料庫驅動程序的JAR文件放在Tomcat的mon/lib中 .在server xml中設置數據源 以MySQL資料庫為例 如下 在<GlobalNamingResources></GlobalNamingResources>節點中加入 <Resourcename= jdbc/DBPool type= javax sql DataSource password= root driverClassName= mysql jdbc Driver maxIdle= maxWait= username= root 逗雀url= jdbc:mysql:// : /test maxActive= />屬性說明 name 數據源名稱 通常取 jdbc/XXX 的格式 type javax sql DataSource ;password 資料庫用戶密碼 driveClassName 資料庫驅動 maxIdle 最大空閑數 資料庫連接的最大空閑時間 超過空閑時間 資料庫連接將被標記為不可用 然後被釋放 設為 表示無限制 MaxActive 連接池的最大資料庫連接數 設為 表示無限制 maxWait 最大建立連接等待時間 如果超過此時間將接到異常 設為 表示無限制 .在你的web應用程序的web xml中設置數據源參考 如下 在<web app></web app>節點中加入 <resource ref>蔽氏<description>MySQLDBConnectionPool</description><res ref name>jdbc/DBPool</res ref name><res type>javax sql DataSource</res type><res auth>Container</res auth><res sharing scope>Shareable</res sharing scope></resource ref>子節點說明 description 描述信息 res ref name 參考數據源名字 同上一步的屬性name res type 資源類型 javax sql DataSource res auth Container res sharing scope Shareable .在web應用程序的context xml中設置數據源鏈接 如下 在<Context></Context>節點中加入 <ResourceLinkname= jdbc/DBPool type= javax sql DataSource global= jdbc/DBPool />屬性說明 name 同第 步和第 步的屬性name值 和子節點res ref name值 type 同樣取 javax sql DataSource global 同name值 至此 設置完成 下面是如何使用資料庫連接池 .建立一個連接池類 DBPool java 用來創建連接池 代碼如下 importjavax naming Context;importjavax naming InitialContext;importjavax naming NamingException;importjavax sql DataSource;publicclassDBPool{privatestaticDataSourcepool;static{宏指散Contextenv=null;try{env=(Context)newInitialContext() lookup( java:p/env );pool=(DataSource)env lookup( jdbc/DBPool );if(pool==null)System err println( DBPool isanunknownDataSource );}catch(NamingExceptionne){ne printStackTrace();}}publicstaticDataSourcegetPool(){returnpool;}} .在要用到資料庫操作的類或jsp頁面中 用DBPool getPool() getConnection() 獲得一個Connection對象 就可以進行資料庫操作 最後別忘了對Connection對象調用close()方法 注意 這里不會關閉這個Connection 而是將這個Connection放回資料庫連接池 lishixin/Article/program/Java/ky/201311/28920

⑨ 資料庫連接池的連接池是什麼啊

資料庫連接是一種關鍵的有限的昂貴的資源,這一點在多用戶的網頁應用程序中體現得尤為突出。對資料庫連接的管理能顯著影響到整個應用程序的伸縮性和健壯性,影響到程序的性能指標。資料庫連接池正是針對這個問題提出來的。資料庫連接池負責分配、管理和釋放資料庫連接,它允許應用程序重復使用一個現有的資料庫連接,而再不是重新建立一個;釋放空閑時間超過最大空閑時間的資料庫連接來避免因為沒有釋放資料庫連接而引起的資料庫連接遺漏。這項技術能明顯提高對資料庫操作的性能。
連接池基本的思想是在系統初始化的時候,將資料庫連接作為對象存儲在內存中,當用戶需要訪問資料庫時,並非建立一個新的連接,而是從連接池中取出一個已建立的空閑連接對象。使用完畢後,用戶也並非將連接關閉,而是將連接放回連接池中,以供下一個請求訪問使用。而連接的建立、斷開都由連接池自身來管理。同時,還可以通過設置連接池的參數來控制連接池中的初始連接數、連接的上下限數以及每個連接的最大使用次數、最大空閑時間等等。也可以通過其自身的管理機制來監視資料庫連接的數量、使用情況等。

資料庫連接池在初始化時將創建一定數量的資料庫連接放到連接池中,這些資料庫連接的數量是由最小資料庫連接數來設定的。無論這些資料庫連接是否被使用,連接池都將一直保證至少擁有這么多的連接數量。連接池的最大資料庫連接數量限定了這個連接池能佔有的最大連接數,當應用程序向連接池請求的連接數超過最大連接數量時,這些請求將被加入到等待隊列中。資料庫連接池的最小連接數和最大連接數的設置要考慮到下列幾個因素:
1. 最小連接數
是連接池一直保持的資料庫連接,所以如果應用程序對資料庫連接的使用量不大,將會有大量的資料庫連接資源被浪費;
2.最大連接數
是連接池能申請的最大連接數,如果資料庫連接請求超過此數,後面的資料庫連接請求將被加入到等待隊列中,這會影響之後的資料庫操作。
3).最小連接數與最大連接數相差太大
那麼最先的連接請求將會獲利,之後超過最小連接數量的連接請求等價於建立一個新的資料庫連接。不過,這些大於最小連接數的資料庫連接在使用完不會馬上被釋放,它將被放到連接池中等待重復使用或是空閑超時後被釋放。