綁定變量用法

綁定變量用法

ID:20512708

大小:32.50 KB

頁(yè)數(shù):5頁(yè)

時(shí)間:2018-10-13

綁定變量用法_第1頁(yè)
綁定變量用法_第2頁(yè)
綁定變量用法_第3頁(yè)
綁定變量用法_第4頁(yè)
綁定變量用法_第5頁(yè)
資源描述:

《綁定變量用法》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

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

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

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

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

5、使用,確保共享池是空的,以提高執(zhí)行效率;以下是引用片段:  set?timing?on(打開(kāi)記時(shí)器.)  declare  type?rc?is?ref?cursor;  l_rc?rc;  l_dummy?all_objects.object_name%type;  l_start?number?default?dbms_utility.get_time;  begin  for?i?in?1?..?1000  loop  open?l_rc?for  'select?object_name  from?all_objects  w

6、here?object_id?=?'?

7、

8、?i;  fetch?l_rc?into?l_dummy;  close?l_rc;  end?loop;  dbms_output.put_line  (?round(?(dbms_utility.get_time-l_start)/100,?2?)?

9、

10、  '?seconds...'?);  end;  /  PL/SQL?過(guò)程已成功完成。  執(zhí)行時(shí)間:?已用時(shí)間:?00:?00:?07.03  這是一個(gè)使用的綁定變量(吃藥后):  set?echo?on  alter?system?fl

11、ush?shared_pool;  declare  type?rc?is?ref?cursor;  l_rc?rc;  l_dummy?all_objects.object_name%type;  l_start?number?default?dbms_utility.get_time;  begin  for?i?in?1?..?1000  loop  open?l_rc?for  'select?object_name  from?all_objects  where?object_id?=?:x'  using?i;  fet

12、ch?l_rc?into?l_dummy;  close?l_rc;  end?loop;  dbms_output.put_line  (?round(?(dbms_utility.get_time-l_start)/

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

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

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