當前位置:首頁 » 操作系統 » 資料庫連接數

資料庫連接數

發布時間: 2022-02-06 23:22:44

A. java開發常用的幾個資料庫連接池

資料庫連接池的好處是不言而喻的,現在大部分的application
server都提供自己的資料庫連接池方案,此時,只要按照application server的文檔說明,正確配置,即可在應用中享受到資料庫連接池的好處。

但是,有些時候,我們的應用是個獨立的java
application,並不是普通的WEB/J2EE應用,而且是單獨運行的,不要什麼application
server的配合,這種情況下,我們就需要建立自己的資料庫連接池方案了。

1、 DBCP

DBCP是Apache的一個開源項目:
commons.dbcp

DBCP依賴Apache的另外2個開源項目
commons.collections和commons.pool

dbcp包,目前版本是1.2.1:http://jakarta.apache.org/commons/dbcp/

pool包,目前版本是1.3:http://jakarta.apache.org/commons/pool/,

common-collections包:http://jakarta.apache.org/commons/collections/

下載這些包並將這些包的路徑添加到classpath中就可以使用dbcp做為項目中的資料庫連接池使用了。

在建立我們自己的資料庫連接池時,可以使用xml文件來傳入需要的參數,這里只使用hard
code的方式來簡單介紹,所有需要我們自己寫的代碼很少,只要建立一個文件如下:
import
org.apache.commons.dbcp.BasicDataSource;
import
org.apache.commons.dbcp.BasicDataSourceFactory;
import
java.sql.SQLException;
import java.sql.Connection;
import
java.util.Properties;

public class ConnectionSource {

private static BasicDataSource dataSource =
null;

public ConnectionSource() {
}

public static void init() {

if (dataSource != null) {
try
{
dataSource.close();
} catch (Exception e)
{
}

dataSource = null;
}

try {
Properties p = new
Properties();

p.setProperty("driverClassName",
"oracle.jdbc.driver.OracleDriver");
p.setProperty("url",
"jdbc:oracle:thin:@192.168.0.1:1521:testDB");

p.setProperty("password", "scott");
p.setProperty("username",
"tiger");
p.setProperty("maxActive", "30");

p.setProperty("maxIdle", "10");
p.setProperty("maxWait",
"1000");
p.setProperty("removeAbandoned",
"false");
p.setProperty("removeAbandonedTimeout",
"120");
p.setProperty("testOnBorrow", "true");

p.setProperty("logAbandoned", "true");

dataSource = (BasicDataSource)
BasicDataSourceFactory.createDataSource(p);

} catch (Exception e) {
}

}

public static synchronized Connection
getConnection() throws SQLException {

if (dataSource == null) {

init();
}

Connection conn = null;

if (dataSource != null) {

conn = dataSource.getConnection();
}

return conn;
}
}

接下來,在我們的應用中,只要簡單地使用ConnectionSource.getConnection()就可以取得連接池中的資料庫連接,享受資料庫連接帶給我們的好處了。當我們使用完取得的資料庫連接後,只要簡單地使用connection.close()就可把此連接返回到連接池中,至於為什麼不是直接關閉此連接,而是返回給連接池,這是因為dbcp使用委派模型來實現Connection介面了。

在使用Properties來創建BasicDataSource時,有很多參數可以設置,比較重要的還有:

testOnBorrow、testOnReturn、testWhileIdle,他們的意思是當是取得連接、返回連接或連接空閑時是否進行有效性驗證(即是否還和資料庫連通的),默認都為false。所以當資料庫連接因為某種原因斷掉後,再從連接池中取得的連接,實際上可能是無效的連接了,所以,為了確保取得的連接是有效的,
可以把把這些屬性設為true。當進行校驗時,需要另一個參數:validationQuery,對oracle來說,可以是:SELECT COUNT(*) FROM
DUAL,實際上就是個簡單的SQL語句,驗證時,就是把這個SQL語句在資料庫上跑一下而已,如果連接正常的,當然就有結果返回了。

還有2個參數:timeBetweenEvictionRunsMillis 和
minEvictableIdleTimeMillis,
他們兩個配合,可以持續更新連接池中的連接對象,當timeBetweenEvictionRunsMillis
大於0時,每過timeBetweenEvictionRunsMillis
時間,就會啟動一個線程,校驗連接池中閑置時間超過minEvictableIdleTimeMillis的連接對象。

還有其他的一些參數,可以參考源代碼。

2、
C3P0:

C3P0是一個開放源代碼的JDBC連接池,C3PO
連接池是一個優秀的連接池,推薦使用。C3PO實現了JDBC3.0規范的部分功能,因而性能更加突出,包括了實現jdbc3和jdbc2擴展規范說明的Connection 和Statement 池的DataSources 對象。
下載地址:http://sourceforge.net/projects/c3p0

package
com.systex.utils.web;

import java.beans.PropertyVetoException;
import
java.sql.Connection;
import java.sql.SQLException;
import
javax.sql.DataSource;
import
com.mchange.v2.c3p0.ComboPooledDataSource;

public class C3PODataSource {
private static
ComboPooledDataSource dataSource = null;
private static final String driver
= "com.mysql.jdbc.Driver";
private static final String url =
"jdbc:mysql://localhost:3306/wyd";
private static final String userName =
"root";
private static final String password = "root";

public static DataSource getDataSource() {
if
(dataSource == null) {
dataSource = new ComboPooledDataSource();
try
{
dataSource.setDriverClass(driver);
} catch (PropertyVetoException
e) {
System.out.println("DataSource Load Driver
Exception!!");
e.printStackTrace();
}
dataSource.setJdbcUrl(url);
dataSource.setUser(userName);
dataSource.setPassword(password);
//
設置連接池最大連接容量
dataSource.setMaxPoolSize(20);
//
設置連接池最小連接容量
dataSource.setMinPoolSize(2);
//
設置連接池最大statements對象容量
dataSource.setMaxStatements(100);
}
return
dataSource;
}

public static Connection getConnection() throws
SQLException {
return
C3PODataSource.getDataSource().getConnection();
}
}

3、 Proxool

這是一個Java SQL
Driver驅動程序,提供了對你選擇的其它類型的驅動程序的連接池封裝。可以非常簡單的移植到現存的代碼中。完全可配置。快速,成熟,健壯。可以透明地為你現存的JDBC驅動程序增加連接池功能。

官方網站: http://proxool.sourceforge.net/

下載地址:http://proxool.sourceforge.net/download.html

B. 資料庫連接數和資料庫連接池的連接數區別是什麼

資料庫連接數
也就是一個資料庫,最多能夠同時 接受 多少個 客戶的連接.

在沒有 資料庫連接池 的情況下, 一個客戶,每次訪問, 就要創建一個 資料庫連接, 執行 SQL, 獲取結果, 然後關閉、釋放掉資料庫連接。

問題就在於 創建一個資料庫連接, 是一個很消耗資源,花費很多時間的操作。

於是,資料庫連接池 產生了。

資料庫連接池 預先打開一定數量的 資料庫連接, 並維持著連接。

當客戶要執行SQL語句的時候, 從 資料庫連接池 裡面, 獲取一個連接, 執行SQL, 獲取結果, 然後把 資料庫連接, 交還給資料庫連接池。

假如一個 session , 執行 10次獨立的操作。

那麼不使用 資料庫連接池 的, 需要 創建資料庫連接10次, 並關閉10次。

使用 資料庫連接池 的, 直接使用 資料庫連接池 中 已經打開好的,直接使用。

C. 資料庫連接數和資料庫連接池的連接數區別

1、資料庫連接數,也就是一個資料庫,最多能夠同時 接受 多少個 客戶的連接.
2、在沒有資料庫連接池 的情況下, 一個客戶,每次訪問, 就要創建一個 資料庫連接, 執行 SQL, 獲取結果, 然後關閉、釋放掉資料庫連接,問題就在於創建一個資料庫連接, 是一個很消耗資源,花費很多時間的操作,於是資料庫連接池產生了。
3、資料庫連接池 預先打開一定數量的資料庫連接, 並維持著連接。
4、當客戶要執行SQL語句的時候, 從資料庫連接池 裡面,獲取一個連接,執行SQL, 獲取結果, 然後把資料庫連接,交還給資料庫連接池。
5、假如一個 session , 執行10次獨立的操作,那麼不使用 資料庫連接池的,需要創建資料庫連接10次,並關閉10次。
6、使用 資料庫連接池的,直接使用 資料庫連接池中已經打開好的,直接使用。

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

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

E. 資料庫連接池

在實際應用開發中,特別是在WEB應用系統中,如果JSP、Servlet或EJB使用JDBC直接訪問資料庫中的數據,每一次數據訪問請求都必須經歷建立資料庫連接、打開資料庫、存取數據和關閉資料庫連接等步驟,而連接並打開資料庫是一件既消耗資源又費時的工作,如果頻繁發生這種資料庫操作,系統的性能必然會急劇下降,甚至會導致系統崩潰。資料庫連接池技術是解決這個問題最常用的方法,在許多應用程序伺服器(例如:Weblogic,WebSphere,JBoss)中,基本都提供了這項技術,無需自己編程,但是,深入了解這項技術是非常必要的。
資料庫連接池技術的思想非常簡單,將資料庫連接作為對象存儲在一個Vector對象中,一旦資料庫連接建立後,不同的資料庫訪問請求就可以共享這些連接,這樣,通過復用這些已經建立的資料庫連接,可以克服上述缺點,極大地節省系統資源和時間。
資料庫連接池的主要操作如下:
(1)建立資料庫連接池對象(伺服器啟動)。
(2)按照事先指定的參數創建初始數量的資料庫連接(即:空閑連接數)。
(3)對於一個資料庫訪問請求,直接從連接池中得到一個連接。如果資料庫連接池對象中沒有空閑的連接,且連接數沒有達到最大(即:最大活躍連接數),創建一個新的資料庫連接。
(4)存取資料庫。
(5)關閉資料庫,釋放所有資料庫連接(此時的關閉資料庫連接,並非真正關閉,而是將其放入空閑隊列中。如實際空閑連接數大於初始空閑連接數則釋放連接)。
(6)釋放資料庫連接池對象(伺服器停止、維護期間,釋放資料庫連接池對象,並釋放所有連接)。

F. java的3種資料庫連接池用哪個好

1 dbcp
dbcp可能是使用最多的開源連接池,原因大概是因為配置方便,而且很多開源和tomcat應用例子都是使用的這個連接池吧。
這個連接池可以設置最大和最小連接,連接等待時間等,基本功能都有。這個連接池的配置參見附件壓縮包中的:dbcp.xml
使用評價:在具體項目應用中,發現此連接池的持續運行的穩定性還是可以,不過速度稍慢,在大並發量的壓力下穩定性有所下降,此外不提供連接池監控

2 c3p0
c3p0是另外一個開源的連接池,在業界也是比較有名的,這個連接池可以設置最大和最小連接,連接等待時間等,基本功能都有。
這個連接池的配置參見附件壓縮包中的:c3p0.xml。
使用評價:在具體項目應用中,發現此連接池的持續運行的穩定性相當不錯,在大並發量的壓力下穩定性也有一定保證,此外不提供連接池監控。

3 proxool
proxool這個連接池可能用到的人比較少,但也有一定知名度,這個連接池可以設置最大和最小連接,連接等待時間等,基本功能都有。
這個連接池的配置參見附件壓縮包中的:proxool.xml。
使用評價:在具體項目應用中,發現此連接池的持續運行的穩定性有一定問題

G. 什麼是資料庫連接池

像打開關閉資料庫連接這種和資料庫的交互可能是很費時的,尤其是當客戶端數量增加的時候,會消耗大量的資源,成本是非常高的。可以在應用伺服器啟動的時候建立很多個資料庫連接並維護在一個池中。連接請求由池中的連接提供。在連接使用完畢以後,把連接歸還到池中,以用於滿足將來更多的請求。

H. java的3種資料庫連接池用哪個好

1
dbcp
dbcp可能是使用最多的開源連接池,原因大概是因為配置方便,而且很多開源和tomcat應用例子都是使用的這個連接池吧。
這個連接池可以設置最大和最小連接,連接等待時間等,基本功能都有。這個連接池的配置參見附件壓縮包中的:dbcp.xml
使用評價:在具體項目應用中,發現此連接池的持續運行的穩定性還是可以,不過速度稍慢,在大並發量的壓力下穩定性
有所下降,此外不提供連接池監控
2
c3p0
c3p0是另外一個開源的連接池,在業界也是比較有名的,這個連接池可以設置最大和最小連接,連接等待時間等,基本功能都有。
這個連接池的配置參見附件壓縮包中的:c3p0.xml。
使用評價:在具體項目應用中,發現此連接池的持續運行的穩定性相當不錯,在大並發量的壓力下穩定性也有一定保證,
此外不提供連接池監控。
3
proxool
proxool這個連接池可能用到的人比較少,但也有一定知名度,這個連接池可以設置最大和最小連接,連接等待時間等,基本功能都有。
這個連接池的配置參見附件壓縮包中的:proxool.xml。
使用評價:在具體項目應用中,發現此連接池的持續運行的穩定性有一定問題,有一個需要長時間跑批的任務場景任務,同樣的代碼

I. 什麼是資料庫連接池謝謝了

資料庫連接池,簡稱dbcp database connection pool

存在意義:
資料庫的連接是非常耗費系統資源的,一個應用通常都是需要與資料庫打交道,也就需要經常連接資料庫,這樣導致浪費大量系統資源;

連接池的原理就是:我事先創建好幾個資料庫連接放著,當我的系統需要操作資料庫時就從連接池裡直接拿連接,並將這個連接標記為 忙 ;用完後在放會池中,標記為 空閑;;;
當連接池裡的連接都在被使用,如果此時還要連接,連接池就會在創建連接放到池裡,,這些連接的數量,都是在配置文件里由你控制的

J. 資料庫連接池

讓我來告訴你把,我是有這方面感受的

資料庫和應用程序的連接不是無限制的。要知道一點就是,無論是什麼資料庫都是按可連接數和可支持CPU數來賣的,但現在的企業老闆都希望成本降到最低,所以買資料庫肯定不會花多少錢,買伺服器也不會買多少CPU啦,這樣你能隨便浪費資料庫連接嗎?

如果你幾下就把資料庫連接用完了,別人就連不上了,所以必須是連上以後馬上讀數據,讀完數據馬上關閉,把連接資料庫的機會趕快讓出來。

但是每次在關閉、重新連接資料庫之間,這個操作是很復雜的,^_^,當然這已經被封裝起來,不用你去管,但很費時間,而連接池就是把連接緩存起來,而不是銷毀,當你用完以後並關閉的時候,並不銷毀這個連接,而是把他保存起來,留著給其他人用,免得下去重新生成這個連接

熱點內容
ios應用上傳 發布:2024-09-08 09:39:41 瀏覽:439
ios儲存密碼哪裡看 發布:2024-09-08 09:30:02 瀏覽:871
opensslcmake編譯 發布:2024-09-08 09:08:48 瀏覽:653
linux下ntp伺服器搭建 發布:2024-09-08 08:26:46 瀏覽:744
db2新建資料庫 發布:2024-09-08 08:10:19 瀏覽:173
頻率計源碼 發布:2024-09-08 07:40:26 瀏覽:780
奧迪a6哪個配置帶後排加熱 發布:2024-09-08 07:06:32 瀏覽:101
linux修改apache埠 發布:2024-09-08 07:05:49 瀏覽:209
有多少個不同的密碼子 發布:2024-09-08 07:00:46 瀏覽:566
linux搭建mysql伺服器配置 發布:2024-09-08 06:50:02 瀏覽:995