<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
    隨筆-230  評論-230  文章-8  trackbacks-0
     平時在PL/SQL中的編程中遇到一些問題,這里以問答的形式來進(jìn)行把它們總結(jié)下來,以供大家分享。

      1、當(dāng)需要向表中裝載大量的數(shù)據(jù)流或者需要處理大量的數(shù)據(jù)流的時候,能否使用管道提高處理效率?
    管道函數(shù)對于改善并行查詢的性能非常方便,它加快往表中加載數(shù)據(jù)的速度。管道函數(shù)的使用總結(jié)如下兩點(diǎn):

      每當(dāng)在查詢里使用PL/SQL函數(shù)時,該查詢將被序列化,即一個處理器只能運(yùn)行一個查詢實(shí)例,那么在這種情況下不可能使用并行查詢(比如在數(shù)據(jù)倉庫中要經(jīng)常使用這項(xiàng)技術(shù))。因此,為了使用并行查詢就必須使用管道函數(shù),這樣也就加快了執(zhí)行的速度。

      管道函數(shù)的輸入?yún)?shù)必須是一個引用記錄集類型(即ref cursor),而返回的是嵌套表類型(其表中每一行對應(yīng)每一個引用記錄)。在使用管道函數(shù)之前,必須先在程序頭寫上PARALLEL_ENABLE,這樣才能在查詢語句中使用管道函數(shù)來處理了。

      2. 如何使PL/SQL程序等待一段時間執(zhí)行?
     
      方法就是使用DBMS_LOCK包的SLEEP函數(shù),可以進(jìn)行精確定時,其語法為:

    DBMS_LOCK.SLEEP (seconds IN NUMBER);

      3.需要在一張表插入一條記錄之后等若干秒后再執(zhí)行另外一個操作,如何在PL/SQL程序里進(jìn)行定時操作?

      一般的做法是用循環(huán)作延遲,利用 DBMS_UTILITY的gettime函數(shù)來檢測當(dāng)前的時間,程序代碼如下:

    DECLARE
    v_delaytime CONSTANT INTEGER := 100;
    v_starttime INTEGER ;
    v_endtime INTEGER ;
    BEGIN
    V_starttime := DBMS_UTILITY.get_time;
    V_endtime := DBMS_UTILITY.get_time;
    While abs(V_endtime- V_starttime)< v_delaytime loop
    /*空循環(huán)或者簡單的耗時執(zhí)行語句*/
    End loop;
    END;
    /

       另外如果是不同會話(session)之間的定時,就必須使用DBMS_PIPE包的函數(shù)來實(shí)現(xiàn)會話間的消息傳遞。

      4.當(dāng)PL/SQL返回一個數(shù)據(jù)集的時候,該使用集合還是游標(biāo)?

      一般情況下,有以下兩點(diǎn)作為依據(jù):

      1) 如果PL/SQL程序返回多多行數(shù)據(jù)給另外一個PL/SQL程序的話,這里就建議使用集合,因?yàn)檫@樣可以利用集合的批收集(bulk collection)來提高從數(shù)據(jù)庫提取數(shù)據(jù)的速度。

      2) 如果需要在PL/SQL程序的環(huán)境中把數(shù)據(jù)返回到宿主語言環(huán)境中(如Sql*plus,c,delphi等),這時應(yīng)該使用游標(biāo)變量來返回這些數(shù)據(jù),因?yàn)閹缀跛械乃拗髡Z言都支持游標(biāo)變量,但不是所有的宿主語言都支持集合。這樣可以增強(qiáng)程序的可移植性。

      5.如何更有效的在PL/SQL中使用游標(biāo)?

      游標(biāo)是PL/SQL中一個非常重要的概念,對數(shù)據(jù)庫的檢索主要依靠游標(biāo)來操作。在PL/SQL中有兩類游標(biāo),一類是隱式游標(biāo),如select clno into v_clno from table_detail.另外一類是顯式游標(biāo),如cursor v_cur is select clno from table_detail。對于游標(biāo)的使用這里給出以下幾點(diǎn)建議:

      1) 盡可能的使用bulk collection。它能夠較大的提高運(yùn)行性能,在Oracl9i的第二版,甚至可以使用bulk collection來直接將數(shù)據(jù)寫入到記錄表

      2) 盡量使用顯式游標(biāo)來處理,因?yàn)橄鄬τ陔[式游標(biāo)來說,顯式游標(biāo)的速度更快一些。

      3) 如果查詢的表很小或者是靜態(tài)的,可以把該表緩存到一個包級的集合里。這樣,你的查詢函數(shù)就直接從集合里(即進(jìn)程全局區(qū),PGA cache),而不是從系統(tǒng)全局區(qū)(SGA)來取數(shù)據(jù),這樣的處理速度會提升很多。
    posted on 2007-02-08 11:20 有貓相伴的日子 閱讀(600) 評論(0)  編輯  收藏 所屬分類: pl/sql
    本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
    主站蜘蛛池模板: 国产亚洲欧美日韩亚洲中文色| 成年人免费的视频| 亚洲日本一线产区和二线| 亚洲国产精品高清久久久| 国产成人免费永久播放视频平台| 99久久久国产精品免费蜜臀| 国产va免费观看| 色天使色婷婷在线影院亚洲| 亚洲天堂2016| 久久亚洲春色中文字幕久久久| 国产日产亚洲系列| 亚洲国产成人乱码精品女人久久久不卡| 99久久精品日本一区二区免费| 国产在线一区二区综合免费视频 | av电影在线免费看| 亚洲大尺度无码无码专线一区| 亚洲国产精品久久人人爱| 久久亚洲精品成人777大小说| 国产亚洲精品看片在线观看| 亚洲第一网站男人都懂| 国产成人aaa在线视频免费观看| 成年男女男精品免费视频网站| 国产精品视频免费观看| 最近中文字幕大全中文字幕免费| 国产成年无码久久久免费| 香蕉视频在线免费看| 精品久久久久久无码免费| 成人国产网站v片免费观看| 亚洲第一se情网站| 国产亚洲精品成人久久网站| 激情小说亚洲色图| 美女羞羞免费视频网站| 国产成人亚洲午夜电影| 国产天堂亚洲国产碰碰| 免费大片av手机看片| 免费人成网上在线观看| 一进一出60分钟免费视频| 一级特黄色毛片免费看| 三年片免费高清版| 免费成人高清在线视频| 免费无码VA一区二区三区|