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


2009-06-16 09:25:31




