《Apache-DBCP數(shù)據(jù)庫連接池的使用》要點:
本文介紹了Apache-DBCP數(shù)據(jù)庫連接池的使用,希望對您有用。如果有疑問,可以聯(lián)系我們。
相關主題:apache配置
1.什么是數(shù)據(jù)庫連接池?
數(shù)據(jù)庫連接是一種關鍵的有限的昂貴的資源,這一點在多用戶的網(wǎng)頁應用法式中體現(xiàn)得尤為突出.對數(shù)據(jù)庫連接的管理能顯著影響到整個應用法式的伸縮性和健壯性,影響到法式的性能指標.數(shù)據(jù)庫連接池正是針對這個問題提出來的.
數(shù)據(jù)庫連接池負責分配、管理和釋放數(shù)據(jù)庫連接,它允許應用程序重復使用一個現(xiàn)有的數(shù)據(jù)庫連接,而不是再重新建立一個;釋放空閑時間跨越最大空閑時間的數(shù)據(jù)庫連接來避免因為沒有釋放數(shù)據(jù)庫連接而引起的數(shù)據(jù)庫連接遺漏.這項技術(shù)能明顯提高對數(shù)據(jù)庫操作的性能.
2.為什么必要數(shù)據(jù)庫連接池?
當對數(shù)據(jù)庫的拜訪過大時,如果沒有數(shù)據(jù)庫連接池,那么頻繁的對數(shù)據(jù)庫進行連接、關閉連接等操作對數(shù)據(jù)庫的壓力是非常大的;如果使用了數(shù)據(jù)庫連接池則同時拜訪數(shù)據(jù)庫的連接就會被很好的控制,從而提高性能.
2.關鍵配置
為了發(fā)揮數(shù)據(jù)庫連接池的作用,在初始化時將創(chuàng)建一定數(shù)量的數(shù)據(jù)庫連接放到連接池中,這些數(shù)據(jù)庫連接的數(shù)量是由最小數(shù)據(jù)庫連接數(shù)來設定的.無論這些數(shù)據(jù)庫連接是否被使用,連接池都將一直保證至少擁有這么多的連接數(shù)量.連接池的最大數(shù)據(jù)庫連接數(shù)量限定了這個連接池能占有的最大連接數(shù),當應用程序向連接池哀求的連接數(shù)超過最大連接數(shù)量時,這些哀求將被加入到等待隊列中.
最小連接數(shù)setMinIdle():
是數(shù)據(jù)庫一直堅持的數(shù)據(jù)庫連接數(shù),所以如果應用程序?qū)?shù)據(jù)庫連接的使用量不大,將有大量的數(shù)據(jù)庫資源被浪費.
初始化連接數(shù)setInitialSize():
連接池啟動時創(chuàng)立的初始化數(shù)據(jù)庫連接數(shù)量.
最大連接數(shù)setMaxIdle():
是連接池能申請的最大連接數(shù),如果數(shù)據(jù)庫連接哀求超過此數(shù),后面的數(shù)據(jù)庫連接哀求被加入到等待隊列中.如果設置為非正數(shù)則表示不限制.
最大等待時間setMaxWaitMillis():
當沒有可用連接時,連接池等待連接被歸還的最大時間,超過時間則拋出異常,可設置參數(shù)為0或者負數(shù)使得無限等待(根據(jù)分歧連接池配置).
//可以創(chuàng)立這樣一個工具類public class ConnectionManager { private static String DRIVER = "com.mysql.jdbc.Driver"; private static String URL = "jdbc:mysql:///t_message"; //"jdbc:mysql:///t_message" private static String USERNAME = "root"; private static String PASSWORD = "rootroot"; private static BasicDataSource datasource = new BasicDataSource(); static { datasource.setDriverClassName(DRIVER); datasource.setUrl(URL); datasource.setUsername(USERNAME); datasource.setPassword(PASSWORD); datasource.setInitialSize(5); datasource.setMaxIdle(20); datasource.setMinIdle(5); datasource.setMaxWaitMillis(3000); } /** * 獲取數(shù)據(jù)庫連接池 * @return */ public static DataSource getDataSource(){ return datasource; } public static Connection getConnection() { Connection conn = null; try { Class.forName(DRIVER); conn = datasource.getConnection(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { throw new DataAccessException("數(shù)據(jù)庫連接異常"); } return conn; }}
維易PHP培訓學院每天發(fā)布《Apache-DBCP數(shù)據(jù)庫連接池的使用》等實戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/11567.html