資料庫連線池的管理思想

2021-06-18 08:28:08 字數 1266 閱讀 5791

在有大量節點訪問的資料庫設計中,經常要使用到連線池來管理所有的連線.

一般方法是:建立兩個連線控制代碼佇列,空閒的等待使用的佇列和正在使用的佇列.

當要查詢時先從空閒佇列中獲取乙個控制代碼,插入到正在使用的佇列,再用這個控制代碼做資料庫操作,完畢後一定要從使用佇列中刪除,再插入到空閒佇列.

設計**如下:

//定義控制代碼佇列

typedef std::listconnection_handle_list;

typedef std::list::iterator connection_handle_list_it;

//連線資料庫的引數結構

class cdbparameter

;//建立兩個佇列

connection_handle_list m_lsbusylist;                ///《正在使用的連線控制代碼

connection_handle_list m_lsidlelist;                  ///《未使用的連線控制代碼

//所有的連線控制代碼先連上資料庫,加入到空閒佇列中,等待使用.

bool cdbmanager::connect(char * host /* = "localhost" */, char * user /* = "chenmin" */, \

char * password /* = "chenmin" */, char * database /* = "hostcache" */)

}catch(...)

return true;

}//提取乙個空閒控制代碼供使用

mysql * cdbmanager::getidleconnecthandle()

else //特殊情況,閒佇列中為空,返回為空

m_listmutex.release();

return pconnecthandle;

}//從使用佇列中釋放乙個使用完畢的控制代碼,插入到空閒佇列

void cdbmanager::setidleconnecthandle(mysql * connecthandle)

//使用示例,首先獲取空閒控制代碼,利用這個控制代碼做真正的操作,然後再插回到空閒佇列

bool cdbmanager::deletehostcachebysessionid(char * sessionid)

//傳入空閒的控制代碼,做真正的刪除操作

bool cdbmanager::deletehostcachebysessionid(mysql * connecthandle, char * sessionid)

資料庫連線池 Redis連線池

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

dbcp資料庫連線池管理

該包主要是管理資料庫的鏈結,獲取鏈結 釋放連線 設定最大連線數 初始化連線數 的空閒時間 在連線資料庫時建立乙個連線池可以很方便的管理所有資料庫鏈結,和高效的使用資料庫連線。主要的兩個物件是basicdatasource 和 basicdatasourcefactory,產生basicdatasou...

dbcp資料庫連線池管理

該包主要是管理資料庫的鏈結,獲取鏈結 釋放連線 設定最大連線數 初始化連線數 的空閒時間 在連線資料庫時建立乙個連線池可以很方便的管理所有資料庫鏈結,和高效的使用資料庫連線。主要的兩個物件是basicdatasource 和 basicdatasourcefactory,產生basicdatasou...