久久久久久久久久久免费|中文字幕不卡成人在线观看|亚洲中文第一页|精品国产乱码久久久久久88AV

   
| 網(wǎng)站首頁(yè)| |招標(biāo)公告| |采購(gòu)公告| |資訊中心| |采購(gòu)機(jī)構(gòu)| |項(xiàng)目中心| |供應(yīng)商庫(kù)| |會(huì)員中心| |招標(biāo)助手| |專家?guī)?/a> |
“優(yōu)秀示例”: Oracle代碼規(guī)程

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

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

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

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

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

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

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

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

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

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

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

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

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

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