簡單介紹一下線程池和數(shù)據(jù)庫連接池的原理
當(dāng)客戶端請求的數(shù)據(jù)量比較大的時(shí)候,使用線程池可以節(jié)約大量的系統(tǒng)資源,使得更多的CPU時(shí)間和內(nèi)存可以高效地利用起來。而數(shù)據(jù)庫連接池的使用則將大大提高程序運(yùn)行效率,同時(shí),我們可以通過其自身的管理機(jī)制來監(jiān)視數(shù)據(jù)庫連接的數(shù)量、使用情況等。本文我們主要就介紹一下線程池和數(shù)據(jù)庫連接池的原理,接下來我們一起來了解一下這一部分內(nèi)容。
線程池的原理:
其實(shí)線程池的原理很簡單,類似于操作系統(tǒng)中的緩沖區(qū)的概念,它的流程如下:先啟動若干數(shù)量的線程,并讓這些線程都處于睡眠狀態(tài),當(dāng)客戶端有一個(gè)新請求時(shí),就會喚醒線程池中的某一個(gè)睡眠線程,讓它來處理客戶端的這個(gè)請求,當(dāng)處理完這個(gè)請求后,線程又處于睡眠狀態(tài)。可能你也許會問:為什么要搞得這么麻煩,如果每當(dāng)客戶端有新的請求時(shí),我就創(chuàng)建一個(gè)新的線程不就完了?這也許是個(gè)不錯(cuò)的方法,因?yàn)樗苁沟媚憔帉懘a相對容易一些,但你卻忽略了一個(gè)重要的問題?那就是性能!就拿我所在的單位來說,我的單位是一個(gè)省級數(shù)據(jù)大集中的銀行網(wǎng)絡(luò)中心,高峰期每秒的客戶端請求并發(fā)數(shù)超過100,如果為每個(gè)客戶端請求創(chuàng)建一個(gè)新線程的話,那耗費(fèi)的CPU時(shí)間和內(nèi)存將是驚人的,如果采用一個(gè)擁有200個(gè)線程的線程池,那將會節(jié)約大量的系統(tǒng)資源,使得更多的CPU時(shí)間和內(nèi)存用來處理實(shí)際的商業(yè)應(yīng)用,而不是頻繁的線程創(chuàng)建與銷毀。
數(shù)據(jù)庫連接池的原理:
數(shù)據(jù)庫連接是一種關(guān)鍵的有限的昂貴的資源,這一點(diǎn)在多用戶的網(wǎng)頁應(yīng)用程序中體現(xiàn)得尤為突出。
一個(gè)數(shù)據(jù)庫連接對象均對應(yīng)一個(gè)物理數(shù)據(jù)庫連接,每次操作都打開一個(gè)物理連接,使用完都關(guān)閉連接,這樣造成系統(tǒng)的性能低下。 數(shù)據(jù)庫連接池的解決方案是在應(yīng)用程序啟動時(shí)建立足夠的數(shù)據(jù)庫連接,并講這些連接組成一個(gè)連接池(簡單說:在一個(gè)“池”里放了好多半成品的數(shù)據(jù)庫聯(lián)接對象),由應(yīng)用程序動態(tài)地對池中的連接進(jìn)行申請、使用和釋放。對于多于連接池中連接數(shù)的并發(fā)請求,應(yīng)該在請求隊(duì)列中排隊(duì)等待。并且應(yīng)用程序可以根據(jù)池中連接的使用率,動態(tài)增加或減少池中的連接數(shù)。
連接池技術(shù)盡可能多地重用了消耗內(nèi)存地資源,大大節(jié)省了內(nèi)存,提高了服務(wù)器地服務(wù)效率,能夠支持更多的客戶服務(wù)。通過使用連接池,將大大提高程序運(yùn)行效率,同時(shí),我們可以通過其自身的管理機(jī)制來監(jiān)視數(shù)據(jù)庫連接的數(shù)量、使用情況等。
1)最小連接數(shù)是連接池一直保持的數(shù)據(jù)庫連接,所以如果應(yīng)用程序?qū)?shù)據(jù)庫連接的使用量不大,將會有大量的數(shù)據(jù)庫連接資源被浪費(fèi);
2)***連接數(shù)是連接池能申請的***連接數(shù),如果數(shù)據(jù)庫連接請求超過此數(shù),后面的數(shù)據(jù)庫連接請求將被加入到等待隊(duì)列中,這會影響之后的數(shù)據(jù)庫操作。
關(guān)于數(shù)據(jù)庫連接池和線程池的原理的介紹就到這里了,希望本次的介紹能夠帶給您一些收獲!
【編輯推薦】


2009-06-16 09:25:31




