mysql连接池为何不用nio_为什么要用数据库连接池?
1.為什么要用數(shù)據(jù)庫連接池?
最原始的數(shù)據(jù)庫使用就是打開一個連接并進(jìn)行使用,使用過后一定要關(guān)閉連接釋放資源。由于頻繁的打開和關(guān)閉連接對jvm包括數(shù)據(jù)庫
都有一定的資源負(fù)荷,尤其應(yīng)用壓力較大時資源占用比較多容易產(chǎn)生性能問題。由此使用連接池的作用就顯現(xiàn)出來,他的原理其實不復(fù)雜:
先打開一定數(shù)量的數(shù)據(jù)庫連接,當(dāng)使用的時候分配給調(diào)用者,調(diào)用完畢后返回給連接池,注意返回給連接池后這些連接并不會關(guān)閉,而是
準(zhǔn)備給下一個調(diào)用者進(jìn)行分配。由此可以看出連接池節(jié)省了大量的數(shù)據(jù)庫連接打開和關(guān)閉的動作,對系統(tǒng)性能提升的益處不言而喻。
2.幾個基本的概念:
最小連接--應(yīng)用啟動后隨即打開的連接數(shù)以及后續(xù)最小維持的連接數(shù)。
最大連接數(shù)--應(yīng)用能夠使用的最多的連接數(shù)
連接增長數(shù)--應(yīng)用每次新打開的連接個數(shù)
舉個例子說明連接池的運作:
假設(shè)設(shè)置了最小和最大的連接為10,20,那么應(yīng)用一旦啟動則首先打開10個數(shù)據(jù)庫連接,但注意此時數(shù)據(jù)庫連接池的正在使用數(shù)字為0--因為你并沒有使用這些連接,而空閑的數(shù)量則是10。然后你開始登錄,假設(shè)登錄代碼使用了一個連接進(jìn)行查詢,那么此時數(shù)據(jù)庫連接池的正在使用數(shù)字為1、空閑數(shù)為9,這并不需要從數(shù)據(jù)庫打開連接--因為連接池已經(jīng)準(zhǔn)備好了10個給你留著呢。登錄結(jié)束了,當(dāng)前連接池的連接數(shù)量是多少?當(dāng)然是0,因為那個連接隨著事務(wù)的結(jié)束已經(jīng)返還給連接池了。然后同時有11個人在同一秒進(jìn)行登錄,會發(fā)生什么:連接池從數(shù)據(jù)庫新申請(打開)了一個連接,連同另外的10個一并送出,這個瞬間連接池的使用數(shù)是11個,不過沒關(guān)系正常情況下過一會兒又會變成0。如果同時有21個人登錄呢?那第21個人就只能等前面的某個人登錄完畢后釋放連接給他。這時連接池開啟了20個數(shù)據(jù)庫連接--雖然很可能正在使用數(shù)量的已經(jīng)降為0,那么20個連接會一直保持嗎?當(dāng)然不,連接池會在一定時間內(nèi)關(guān)閉一定量的連接還給數(shù)據(jù)庫,在這個例子里數(shù)字是20-10=10,因為只需要保持最小連接數(shù)就好了,而這個時間周期也是連接池里配置的。
總結(jié)
以上是生活随笔為你收集整理的mysql连接池为何不用nio_为什么要用数据库连接池?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《病中得樊大书》第三句是什么
- 下一篇: python 特征选择卡方_特征选择