Oracle數(shù)據(jù)庫的綁定變量特性及應(yīng)用.doc

Oracle數(shù)據(jù)庫的綁定變量特性及應(yīng)用.doc

ID:51691678

大?。?5.50 KB

頁數(shù):13頁

時間:2020-03-15

Oracle數(shù)據(jù)庫的綁定變量特性及應(yīng)用.doc_第1頁
Oracle數(shù)據(jù)庫的綁定變量特性及應(yīng)用.doc_第2頁
Oracle數(shù)據(jù)庫的綁定變量特性及應(yīng)用.doc_第3頁
Oracle數(shù)據(jù)庫的綁定變量特性及應(yīng)用.doc_第4頁
Oracle數(shù)據(jù)庫的綁定變量特性及應(yīng)用.doc_第5頁
資源描述:

《Oracle數(shù)據(jù)庫的綁定變量特性及應(yīng)用.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、Oracle數(shù)據(jù)庫的綁定變量特性及應(yīng)用在開發(fā)一個數(shù)據(jù)庫系統(tǒng)前,有誰對Oracle系統(tǒng)了解很多,尤其是它的特性,好象很少吧;對初學(xué)者來講,這更是不可能的事情;僅僅簡單掌握了SQL的寫法,就開始了數(shù)據(jù)庫的開發(fā),其結(jié)果只能是開發(fā)一個沒有效率,也沒有可擴(kuò)展的系統(tǒng);因此,我寫這個主題也是希望讓大家更多地掌握Oracle數(shù)據(jù)庫的特性,從而在架構(gòu)一個新系統(tǒng)時,能考慮系統(tǒng)的可擴(kuò)展,可伸縮性,也兼顧系統(tǒng)的效率和穩(wěn)定;使用綁定變量是Oracle數(shù)據(jù)庫的特性之一;于是大家要問,為什么使用,怎樣使用,它的使用限制條件是什么?我會按照這樣的想法去解答大家的疑問,我也

2、會以舉例子的方式來回答這些問題;1.為什么使用綁定變量?這是解決Oracle應(yīng)用程序可伸縮性的一個關(guān)鍵環(huán)節(jié);而Oracle的共享池就決定了開發(fā)人員必須使用綁定變量;如果想要Oracle運(yùn)行減慢,甚至完全終止,那就可以不用綁定變量;這里舉例說明上述問題;為了查詢一個員工代號是123,你可以這樣查詢:select*fromempwhereempno=’123’;你也可以這樣查詢:select*fromempwhereempno=:empno;象我們往常一樣,你查詢員工’123’一次以后,有可能再也不用;接著你有可能查詢員工’456’,然后查詢’

3、789’等等;如果查詢使用象第一個查詢語句,你每次查詢都是一個新的查詢(我們叫它硬編碼的查詢方法);因此,Oracle每次必須分析,解析,安全檢查,優(yōu)化等等;第二個查詢語句提供了綁定變量:empno,它的值在查詢執(zhí)行時提供,查詢經(jīng)過一次編譯后,查詢方案存儲在共享池中,可以用來檢索和重用;在性能和伸縮性方面,這兩者的差異是巨大的,甚至是驚人的;通俗點(diǎn)講,就不是一個級別;第一個查詢使用的頻率越高,所消耗的系統(tǒng)硬件資源越大,從而降低了用戶的使用數(shù)量;它也會把優(yōu)化好的其它查詢語句從共享池中踢出;就象一個老鼠壞了一鍋湯似的,系統(tǒng)的整體性能降低;而執(zhí)行

4、綁定變量,提交相同對象的完全相同的查詢的用戶(這句話,大家聽起來比較難理解,隨后我會給出詳細(xì)的解釋),一次性使用就可重復(fù)使用,其效率不言耳語;打個形象的比喻來說,第一個查詢就象一次性使用的筷子,而第二個查詢象是鐵筷子,只要洗干凈,張三李四都能用,合理有效地使用了資源;下面舉例子去詳細(xì)論證上述的問題,不使用綁定變量為生病狀況:這是一個未使用的綁定變量(吃藥前):setechoon;(把執(zhí)行結(jié)果顯示出來)altersystemflushshared_pool;這條語句是清空共項池,每次都必須使用,確保共享池是空的,以提高執(zhí)行效率;settimi

5、ngon(打開記時器.)declaretypercisrefcursor;l_rcrc;l_dummyall_objects.object_name%type;l_startnumberdefaultdbms_utility.get_time;beginforiin1..1000loopopenl_rcfor'selectobject_namefromall_objectswhereobject_id='

6、

7、i;fetchl_rcintol_dummy;closel_rc;endloop;dbms_output.put_line(round

8、((dbms_utility.get_time-l_start)/100,2)

9、

10、'seconds...');end;/PL/SQL過程已成功完成。執(zhí)行時間:已用時間:00:00:07.03這是一個使用的綁定變量(吃藥后):setechoonaltersystemflushshared_pool;declaretypercisrefcursor;l_rcrc;l_dummyall_objects.object_name%type;l_startnumberdefaultdbms_utility.get_time;beginforiin1..

11、1000loopopenl_rcfor'selectobject_namefromall_objectswhereobject_id=:x'usingi;fetchl_rcintol_dummy;closel_rc;endloop;dbms_output.put_line(round((dbms_utility.get_time-l_start)/100,2)

12、

13、'seconds...');end;PL/SQL過程已成功完成。執(zhí)行時間:已用時間:00:00:00.75大家自己比較結(jié)果,相差就是一個數(shù)量級;使用綁定變量不僅僅是運(yùn)行快,而且允許

14、多個用戶同時使用;上述綁定變量的另一種寫法供大家參考;setechoonaltersystemflushshared_pool;declaretypercisrefcursor;

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。