資料庫連線池

2021-09-12 07:35:03 字數 3018 閱讀 8532

用池來管理connection,這可以重複使用connection。有了池,所以我們就不用自己來建立connection,而是通過池來獲取connection物件。當使用完connection後,呼叫connection的close()方法也不會真的關閉connection,而是把connection「歸還」給池。池就可以再利用這個connection物件了。

下面介紹兩種連線池:

public void fun1() throws sqlexception
#基本配置

driverclassname=com.mysql.jdbc.driver

url=jdbc:mysql://localhost:3306/mydb1

username=root

password=123

#初始化池大小,即一開始池中就會有10個連線物件

預設值為0

initialsize=0

#最大連線數,如果設定maxactive=50時,池中最多可以有50個連線,當然這50個連線中包含被使用的和沒被使用的(空閒)

#你是乙個包工頭,你一共有50個工人,但這50個工人有的當前正在工作,有的正在空閒

#預設值為8,如果設定為非正數,表示沒有限制!即無限大

maxactive=8

#最大空閒連線

#當設定maxidle=30時,你是包工頭,你允許最多有20個工人空閒,如果現在有30個空閒工人,那麼要開除10個

#預設值為8,如果設定為負數,表示沒有限制!即無限大

maxidle=8

#最小空閒連線

#如果設定minidel=5時,如果你的工人只有3個空閒,那麼你需要再去招2個回來,保證有5個空閒工人

#預設值為0

minidle=0

#最大等待時間

#當設定maxwait=5000時,現在你的工作都出去工作了,又來了乙個工作,需要乙個工人。

#這時就要等待有工人回來,如果等待5000毫秒還沒回來,那就丟擲異常

#沒有工人的原因:最多工人數為50,已經有50個工人了,不能再招了,但50人都出去工作了。

#預設值為-1,表示無限期等待,不會丟擲異常。

maxwait=-1

#連線屬性

#就是原來放在url後面的引數,可以使用connectionproperties來指定

#如果已經在url後面指定了,那麼就不用在這裡指定了。

#useserverprepstmts=true,mysql開啟預編譯功能

#cacheprepstmts=true,mysql開啟快取preparedstatement功能,

#prepstmtcachesize=50,快取preparedstatement的上限

#prepstmtcachesqllimit=300,當sql模板長度大於300時,就不再快取它

connectionproperties=useunicode=true;characterencoding=utf8;useserverprepstmts=true;cacheprepstmts=true;prepstmtcachesize=50;prepstmtcachesqllimit=300

#連線的預設提交方式

#預設值為true

defaultautocommit=true

#連線是否為唯讀連線

#connection有一對方法:setreadonly(boolean)和isreadonly()

#如果是唯讀連線,那麼你只能用這個連線來做查詢

#指定連線為唯讀是為了優化!這個優化與併發事務相關!

#如果兩個併發事務,對同一行記錄做增、刪、改操作,是不是一定要隔離它們啊?

#如果兩個併發事務,對同一行記錄只做查詢操作,那麼是不是就不用隔離它們了?

#如果沒有指定這個屬性值,那麼是否為唯讀連線,這就由驅動自己來決定了。即connection的實現類自己來決定!

defaultreadonly=false

#指定事務的事務隔離級別

#可選值:none,read_uncommitted, read_committed, repeatable_read, serializable

#如果沒有指定,那麼由驅動中的connection實現類自己來決定

defaulttransactionisolation=repeatable_read

public void fun1() throws propertyvetoexception, sqlexception
c3p0也可以指定配置檔案,而且配置檔案可以是properties,也可騍xml的。當然xml的高階一些了。但是c3p0的配置檔名必須為c3p0-config.xml,並且必須放在類路徑下。

<?xml version="1.0" encoding="utf-8"?>

[預設配置]

jdbc:mysql://localhost:3306/mydb1

com.mysql.jdbc.driver

root

1233102

10 [命名配置]

jdbc:mysql://localhost:3306/mydb1

com.mysql.jdbc.driver

root

1233102

10

c3p0的配置檔案中可以配置多個連線資訊,可以給每個配置起個名字,這樣可以方便的通過配置名稱來切換配置資訊。上面檔案中預設配置為mysql的配置,名為oracle-config的配置也是mysql的配置,呵呵。

public void fun2() throws propertyvetoexception, sqlexception 

public void fun2() throws propertyvetoexception, sqlexception

資料庫連線池 Redis連線池

基本原理 在內部物件池中,維護一定數量的資料庫連線,並對外暴露資料庫連線的獲取和返回方法。如外部使用者可通過getconnection方法獲取資料庫連線,使用完畢後再通過releaseconnection方法將連線返回,注意此時的連線並沒有關閉,而是由連線池管理器 並為下一次使用做好準備。2.作用 ...

資料庫連線池

實現資料連線池,讓系統有更高有執行效率 using system using system.data using system.data.sqlclient using system.collections using system.threading public class dataaccess...

資料庫連線池

資料庫連線池概述 資料庫連線是一種關鍵的有限的昂貴的資源,這一點在多使用者的網頁應用程式中體現得尤為突出。對資料庫連線的管理能顯著影響到整個應用程式的伸縮性和健壯性,影響到程式的效能指標。資料庫連線池正是針對這個問題提出來的。資料庫連線池負責分配 管理和釋放資料庫連線,它允許應用程式重複使用乙個現有...