无码国产精品视频一区二区|亚洲欧美日韩在线码|国产大屁股熟女免费视频|伊人精品综合在合线

  • <center id="6sw0e"><dl id="6sw0e"></dl></center>
  • <ul id="6sw0e"><source id="6sw0e"></source></ul>
    <delect id="6sw0e"><s id="6sw0e"></s></delect>
  • <ul id="6sw0e"></ul>
  •    
    | 網(wǎng)站首頁| |招標公告| |采購公告| |資訊中心| |采購機構(gòu)| |項目中心| |供應(yīng)商庫| |會員中心| |招標助手| |專家?guī)?/a> |
    “優(yōu)秀示例”: Oracle代碼規(guī)程

    來源:中國政府采購招標網(wǎng) 時間:2008/9/22
    【IT專家網(wǎng)獨家】且不說Oracle的第三代語言(3GLs),如果對所有SQL和PL/SQL的優(yōu)秀示例做出完整的論述,大概需要寫成一本書——事實上,市面上已經(jīng)有好幾本這樣的書出版了,在這里我只會列舉一些比較“重量級”的Oracle優(yōu)秀示例。

      在PL/SQL中使用陣列處理是一個很好的做法(如,使用bulk collect和forall)。批量處理能夠大大減少PL/SQL語句執(zhí)行引擎的環(huán)境切換次數(shù),從而提高其性能。

      另一個優(yōu)秀示例是把存儲過程中的所有代碼放入鎖定的軟件包中,這樣可以生成模塊單元。把存儲過程放入軟件包里可以實現(xiàn)相關(guān)程序和功能的分組。當單個包被使用,整個軟件包都會載入內(nèi)存中(內(nèi)存會啟動整個軟件包?),把磁碟存取時間減到最少。通過這個方法我們同樣可以把整個應(yīng)用程序包載進內(nèi)存中,防止發(fā)生重新載入和代碼解析,從而減少嚴重影響性能的代碼遞歸。

      PL/SQL(和SQL)的另一個優(yōu)秀示例是使用適當?shù)淖兞款愋?當你需要NUMBER時不要使用VARCHAR2,反之亦然)。使用不適當?shù)淖兞?用character跟number進行比較)會導致無用索引。保證變量類型正確的一種方法就是使用%TYPE 和%ROWTYPE。

      還有就是永遠使用DBMS_PROFILER或使用像Quest Software的Quest Code Tester工具來驗證循環(huán)邏輯。DBMS_PROFILER是Oracle提供的一個軟件包,能夠使你的代碼生成對每行執(zhí)行時間及所需時間的追蹤。你可以驗證循環(huán)執(zhí)行次數(shù)應(yīng)為最少。

      你同樣應(yīng)該驗證適當?shù)腎F-THEN-ELSE結(jié)構(gòu)。我的意思是你應(yīng)該把最常用的選項放在前面(比如exit test)。這個方法同樣使用于CASE結(jié)構(gòu)。

      PL/SQL(以及Java、C、C++和其他所有Oracle相關(guān)的3GLs)中,另一個更為重要的優(yōu)秀示例是首先調(diào)優(yōu)SQL。即使是世界上設(shè)計最精密的程序,如果其中含有的SQL很差的話,運行起來性能也會不好。Quest的SQL Optimizer、Performance Analyzer、TOAD和SQL Navigator都能夠優(yōu)化SQL。

      在測試PL/SQL-SQL代碼的時候,應(yīng)利用匿名PL/SQL塊來保證處理環(huán)境的相似性。如果你在一個標準的SQL環(huán)境里用文字代替綁定變量來進行測試,你所得到的執(zhí)行計劃會不同于當你使用匿名PL/SQL塊和綁定變量時得到的執(zhí)行計劃,因此你的調(diào)整很可能不能獲得很好的結(jié)果。使用Quest Code Tester能夠保證你能獲得你想要的結(jié)果。

      還有一個良好的編程做法是很好地利用臨時表和PL/SQL索引表。不正確地使用”normal”表進行臨時儲存會降低性能,因此應(yīng)使用臨時表。而當內(nèi)存空間足夠運行PL/SQL表時使用臨時表也會大大降低性能。你也可以利用視圖來創(chuàng)建中間結(jié)果的緩存表。

      還有一個很簡單易行的優(yōu)秀示例是在IN OUT和OUT變量上利用NOCOPY。在一個使用IN OUT或OUT的PL/SQL程序中,如果NOCOPY關(guān)鍵字沒有包含在其頁首的變量聲明中,所有的變量都會通過copyout程序傳值(傳值而非傳引用)。而使用NONCOPY,所有通過引用傳值,這樣做會大大提高運行性能。

      最后,還要求所有SQL開發(fā)者生成解釋執(zhí)行計劃,然后再經(jīng)由同行評審。在較大的開發(fā)計劃里,數(shù)據(jù)庫管理員不可能檢查所有的代碼看是否獲得最佳的性能,因此開發(fā)者首先對SQL代碼性能進行調(diào)優(yōu)是很必要的。只要開發(fā)者把SQL的索引功能調(diào)優(yōu),調(diào)整為正確的邏輯和技術(shù),數(shù)據(jù)庫管理員便能夠?qū)﹄y以處理的問題代碼進行更高級的調(diào)優(yōu)。

      TechTarget獨家授權(quán)文章,嚴禁轉(zhuǎn)載

    [打印本頁] [關(guān)閉窗口]

    | 關(guān)于我們 | 廣告服務(wù) | 展會推薦 | 網(wǎng)站導航 | 友情鏈接 | 自助友情鏈接 | 機構(gòu)文件 | 匯款帳號 | 網(wǎng)站律師 | 聯(lián)系我們 |
    中國政府采購招標網(wǎng)©2000-2023 本站網(wǎng)絡(luò)實名/中文域名:"中國政府采購招標網(wǎng).中文網(wǎng) 政府采購網(wǎng).中文網(wǎng) 招標網(wǎng).中文網(wǎng)"
    本網(wǎng)站域名:www.sailingon.com.cn 中國政府采購招標網(wǎng) 京ICP備2021005469  京公網(wǎng)安備11010602005260
    技術(shù)支持:北京中政發(fā)科學技術(shù)研究中心 政府采購信息服務(wù):政采標訊科技(北京)有限公司 All rights reserved
    網(wǎng)站管理:政府采購招標中心 聯(lián)系電話:010-68282024 83684022 傳真:010-83684022 更多聯(lián)系電話...
    標訊接收郵箱:service@gov-cg.org.cn 供應(yīng)商郵箱:zfcgzb@gov-cg.org.cn