摘要:設(shè)計(jì)了多線程數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),采用每個(gè)線程分配專用的運(yùn)行上下文機(jī)制,共享連接池中的若干個(gè)物理連接,以降低資源占用、提高系統(tǒng)性能。實(shí)驗(yàn)表明,使用連接池的系統(tǒng)的運(yùn)行速度遠(yuǎn)遠(yuǎn)優(yōu)于不使用連接池的運(yùn)行速度。
關(guān)鍵詞:多線程;連接池;運(yùn)行上下文;數(shù)據(jù)庫(kù)
0 引言
在傳統(tǒng)的數(shù)據(jù)庫(kù)連接方式中,每一個(gè)數(shù)據(jù)庫(kù)連接對(duì)象均對(duì)應(yīng)一個(gè)物理數(shù)據(jù)庫(kù)連接,數(shù)據(jù)庫(kù)連接的建立以及關(guān)閉對(duì)系統(tǒng)而言是耗費(fèi)系統(tǒng)資源的操作。在多層體系結(jié)構(gòu)的應(yīng)用程序環(huán)境中,這種耗費(fèi)資源的動(dòng)作對(duì)系統(tǒng)的性能影響尤為明顯。多層體系結(jié)構(gòu)的應(yīng)用程序通過(guò)連接池(Connection pooling)技術(shù)可以使系統(tǒng)的性能明顯得到提高。使用連接池意味著當(dāng)應(yīng)用程序需要調(diào)用一個(gè)數(shù)據(jù)庫(kù)連接時(shí),數(shù)據(jù)庫(kù)相關(guān)的接口將返回一個(gè)重用數(shù)據(jù)庫(kù)連接來(lái)代替重新創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)連接。通過(guò)這種方式,應(yīng)用程序可以減少數(shù)據(jù)庫(kù)連接操作。特別是在多層環(huán)境中,多個(gè)客戶端可以通過(guò)共享少量的物理數(shù)據(jù)庫(kù)連接來(lái)滿足系統(tǒng)需求。使用連接池技術(shù)的數(shù)據(jù)庫(kù)應(yīng)用程序不僅可以提高系統(tǒng)性能,同時(shí)也提高了系統(tǒng)的可測(cè)量性。
1 關(guān)鍵應(yīng)用技術(shù)
1.1 PL/SQL
PL/SQL是ANSI標(biāo)準(zhǔn)SQL的Oracle版本過(guò)程化語(yǔ)言的擴(kuò)展。它允許嵌入SQL語(yǔ)句,支持變量定義、過(guò)程結(jié)構(gòu)以及異常處理機(jī)制等。在任何運(yùn)行Oracle的平臺(tái)中都可以使用PL/SQL。C/C++語(yǔ)言是開發(fā)高效率數(shù)據(jù)庫(kù)應(yīng)用程序的最佳語(yǔ)言。通過(guò)Oracle的預(yù)編譯工具Pro*C/C++,可在C/C++程序中內(nèi)嵌SQL語(yǔ)句和PL/SQL塊。當(dāng)應(yīng)用程序訪問(wèn)RDBMS時(shí),每執(zhí)行一條SQL語(yǔ)句都要經(jīng)過(guò)一次網(wǎng)絡(luò),通過(guò)使用PL/SQL塊,將多條SQL語(yǔ)句組織到同一個(gè)PL/SQL塊中,可大大降低網(wǎng)絡(luò)開銷,進(jìn)而提高應(yīng)用性能,有利于開發(fā)高性能的應(yīng)用服務(wù)器?!?br>