日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql数据库连接池_MySql数据库连接池

發布時間:2025/3/19 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql数据库连接池_MySql数据库连接池 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.傳統鏈接(如下為示意圖)

注意:

(1).傳統方式找DriverManager要連接,數目是有限的。

(2).傳統方式的close(),并沒有將Connection重用,只是切斷應用程序和數據庫的橋梁,即無發送到SQL命令到數據庫端執行

(3).項目中,對于Connection不說,不會直接使用DriverManager取得,而使用連接池方式。

2.采用連接池(示意圖)

3.開源數據庫連接池

(1).現在很多Web服務器(Weblogic, WebSphere, Tomcat)都提供了DataSoruce的實現,即連接池的實現。通常我們把DataSource的實現,按其英文含義稱之為數據源,數據源中都包含了數據庫連接池的實現。

(2).也有一些開源組織提供了數據源的獨立實現:

DBCP 數據庫連接池(tomcat)

C3P0 數據庫連接池(hibernate)

(3).實際應用時不需要編寫連接數據庫代碼,直接從數據源獲得數據庫的連接。程序員編程時也應盡量使用這些數據源的實現,以提升程序的數據庫訪問性能。

4.C3P0的使用:

(1).在classpath的路徑下配置xml文件,即src的文件下而且這個文件名必須是c3p0-config.xml

原始的c3p0-config.xml的文件參數:

3

30

1000

false

Test

false

100

null

false

60

3

60

15

100

3

root

password

select id from test where id=1

300

false

true

root

false

con_test

30000

30

10

30

25

10

0

200

300

實戰練習:

1>.首先配置c3p0-config.xml文件

com.mysql.jdbc.Driver

root

wwh

jdbc:mysql://127.0.0.1:3306/jdbctest

2>.代碼操作連接(TestC3P0.java)

package cn.wwh.www.java.jdbc.datasource;

import java.sql.Connection;

import com.mchange.v2.c3p0.ComboPooledDataSource;

/**

*類的作用:

*

*

*@author 一葉扁舟

*@version 1.0

*@創建時間: 2014-9-2 上午12:02:13

*/

//測試連接池C3P0的用法

public class TestC3P0 {

public static void main(String[] args) throws Exception {

long begin = System.currentTimeMillis();

//創建C3P0連接池,并加載c3p0-config.xml文件

ComboPooledDataSource dataSource = new ComboPooledDataSource();

for(int i=1;i<=1000000;i++){

Connection conn = dataSource.getConnection();

if(conn!=null){

System.out.println("獲取連接第"+i+"個");

conn.close();

}

}

long end = System.currentTimeMillis();

System.out.println("用了" + (end-begin)/1000+"秒");

}

}

5.DBCP的使用:

(1).采用類加載的方式,文件名是:dbcp.properties

driverClassName=com.mysql.jdbc.Driver

url=jdbc:mysql://127.0.0.1:3306/jdbctest

username=root

password=wwh

(2).在代碼中使用(TestDBCP.java)

package cn.wwh.www.java.jdbc.datasource;

import java.io.InputStream;

import java.sql.Connection;

import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;

/**

*類的作用:采用DBCP連接池的方式去獲取數據庫的鏈接,并測試他的時間

*

*

*@author 一葉扁舟

*@version 1.0

*@創建時間: 2014-9-1 下午09:27:59

*/

//測試連接池DBCP的用法

public class TestDBCP {

public static void main(String[] args) throws Exception {

long begin = System.currentTimeMillis();

//加載屬性文件

InputStream is = TestDBCP.class.getClassLoader().getResourceAsStream("cn/wwh/www/java/jdbc/config/dbcp.properties");

Properties props = new Properties();

props.load(is);

//創建DBCP連接池工廠

BasicDataSourceFactory factory = new BasicDataSourceFactory();

//創建數據源,即連接池

DataSource ds = factory.createDataSource(props);

for(int i=1;i<=1000000;i++){

//從連接池中取得一個空閑的連接對象

Connection conn = ds.getConnection();

if(conn!=null){

System.out.println("獲取連接第"+i+"個");

}

//將連接對象還回給連接池

conn.close();

}

long end = System.currentTimeMillis();

System.out.println("用了" + (end-begin)/1000+"秒");

}

}

第一的測試時間為18秒,第二個的測試時間為13秒,不同的機器性能不一樣,測試的時間快慢也不可能。但是理論上C3P0的速度應該更快,但是我測試的數據卻恰恰相反,很是奇怪。

總結:

1>DBCP和C3P0,都是Java開源的,都必須直接或間接實現javax.sql.DataSource接口

2>DBCP連接池需要dbcp.properties文件,同時需加入3個對應的jar包

3>C3P0連接池需要在/WEB-INF/classes/目錄下存放c3p0-config.xml文件,該類ComboPooledDataSource在創建時

會自動在指定的目錄下找xml文件,并加載默認設置

4>tomcat用的也是c3p0

6.導入的jar包

commons-dbcp.jar:DBCP實現要導入的jar

commons-pool.jar: 連接池實現的依賴類

commons-collections.jar :連接池實現的集合類

c3p0-0.9.1.2.jar :C3P0實現要導入的jar包

總結

以上是生活随笔為你收集整理的mysql数据库连接池_MySql数据库连接池的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。