張 艷
(山東信息職業(yè)技術(shù)學(xué)院 山東 261061)
計(jì)算機(jī)技術(shù)發(fā)展以來,計(jì)算機(jī)考試系統(tǒng)也得到了迅速發(fā)展,從軟件技術(shù)方面看,計(jì)算機(jī)考試系統(tǒng)大致經(jīng)歷了三個(gè)階段:單機(jī)考試系統(tǒng)、網(wǎng)絡(luò)考試系統(tǒng)、遠(yuǎn)程考試系統(tǒng)。單機(jī)考試系統(tǒng)和網(wǎng)絡(luò)考試系統(tǒng)以C/S架構(gòu)為主,遠(yuǎn)程考試系統(tǒng)以B/S或者B/S與C/S相結(jié)合的架構(gòu)為主。目前,以B/S架構(gòu)為主的遠(yuǎn)程考試系統(tǒng)逐漸成為考試系統(tǒng)的主流架構(gòu),本文探討的就是基于JAVA的B/S架構(gòu)的遠(yuǎn)程考試系統(tǒng)。使用簡單的數(shù)據(jù)庫操作,不僅會(huì)增加系統(tǒng)的開銷,而且還容易忘記釋放連接導(dǎo)致內(nèi)存溢出,最終導(dǎo)致系統(tǒng)崩潰的問題。本基于JAVA的考試系統(tǒng)對(duì)數(shù)據(jù)庫連接池技術(shù)進(jìn)行了研究和改進(jìn),使得考試系統(tǒng)的性能獲得明顯的改進(jìn)。
數(shù)據(jù)庫連接池的基本原理就是將預(yù)先建立的連接存放至內(nèi)存對(duì)象中以備系統(tǒng)進(jìn)行調(diào)用。數(shù)據(jù)庫連接池起到了一個(gè)連接緩沖池的作用。當(dāng)考試系統(tǒng)需要建立一個(gè)數(shù)據(jù)庫連接時(shí),只需要從連接池中取出一個(gè)連接即可,不需要新建數(shù)據(jù)庫連接。而且,在進(jìn)程使用完數(shù)據(jù)庫連接后,只需要將連接存放回至數(shù)據(jù)庫連接池即可,也不要對(duì)其進(jìn)行關(guān)閉。假若連接池的數(shù)據(jù)庫連接數(shù)量不夠使用,則連接的建立和關(guān)閉都是由連接池來管理,降低了程序出錯(cuò)的幾率。
本考試系統(tǒng)是通過調(diào)用Weblogic連接池的ContextManager類進(jìn)行實(shí)現(xiàn)的,類ContextManager是由JAVA進(jìn)行實(shí)現(xiàn)的,并且獲取連接池的連接是通過jndi的方式進(jìn)行獲取的,獲取連接池,直接提供給訪問者進(jìn)行使用。
通過getInitConnection方法獲取數(shù)據(jù)庫連接池的連接后,任何一個(gè)程序需要對(duì)數(shù)據(jù)庫進(jìn)行連接時(shí),只需要調(diào)用conn= getInitConnection()即可獲取數(shù)據(jù)庫連接。
本系統(tǒng)使用Jmeter測(cè)試軟件對(duì)未使用連接池的考試系統(tǒng)和使用連接池的考試系統(tǒng)進(jìn)行系統(tǒng)性能的測(cè)試與分析比較。本課題以考試系統(tǒng)中獲取考試題目為例,分別使用不同的并發(fā)用戶數(shù)量對(duì)連接池的考試系統(tǒng)和使用連接池的考試系統(tǒng)進(jìn)行測(cè)試,連接池初始連接數(shù)設(shè)置為10,最大連接數(shù)設(shè)置為50.測(cè)試結(jié)果如表1所示。
并發(fā)數(shù) 無連接池耗時(shí) 有連接池耗時(shí) 性能提升1 60ms 30 ms 50%5 100 ms 40.1 ms 59.9%10 375.5 ms 113.6 ms 69.5%20 366.7 ms 181.7 ms 50.3%40 647.3 ms 336.4 ms 48.2%
由表1可以看出,使用連接池的考試系統(tǒng)性能得到大幅度提升,約為不適用連接池的考試系統(tǒng)性能的50%左右。當(dāng)并發(fā)用戶數(shù)量為10時(shí),系統(tǒng)性能提升最為顯著,性能提升比例為69.5%。然而本測(cè)試系統(tǒng)的數(shù)據(jù)庫連接池的初始連接數(shù)設(shè)置為10,因此連接池的配置參數(shù)對(duì)系統(tǒng)性能也有較大的影響。
數(shù)據(jù)庫連接池技術(shù)已經(jīng)成為當(dāng)前Java應(yīng)用程序提高系統(tǒng)數(shù)據(jù)庫訪問效率的至關(guān)重要的關(guān)鍵技術(shù)之一,本文詳細(xì)介紹了在基于Java的遠(yuǎn)程網(wǎng)絡(luò)考試系統(tǒng)中使用數(shù)據(jù)庫連接池的原理和設(shè)計(jì)方法,并對(duì)數(shù)據(jù)庫連接池進(jìn)行優(yōu)化的考試系統(tǒng)進(jìn)行了測(cè)試與分析,測(cè)試結(jié)果表明,使用數(shù)據(jù)庫連接池的考試系統(tǒng)的性能得到了大幅度的提升,并且還可以有效降低系統(tǒng)出錯(cuò)的概率,降低系統(tǒng)開銷。而且,數(shù)據(jù)庫連接池的參數(shù)配置對(duì)系統(tǒng)的性能提升也有至關(guān)重要的作用。
[1]陳帥.計(jì)算機(jī)考試系統(tǒng)研究[J].淮南師范學(xué)院學(xué)報(bào),2012,21(3):42-44
[2]羅榮,唐學(xué)兵.基于JDBC的數(shù)據(jù)庫連接池的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2011,5(2):31-34.
[3]商杰,朱戰(zhàn)立.數(shù)據(jù)庫連接池技術(shù)研究與應(yīng)用[J].現(xiàn)代電子技術(shù),2012.3:127-129.
[4]李美滿,易德成.通用考試系統(tǒng)開放題庫與組卷及評(píng)卷算法研究[J].計(jì)算機(jī)工程與設(shè)計(jì).2005.10:65-68
[5]李鵬,王汝傳.通用考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].南京郵電大學(xué)學(xué)報(bào)(自然科學(xué)版),2012.06(1):24-26.