亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

Oracle中PL/SQL編程對系統性能的影響

2024-08-29 13:50:54
字體:
來源:轉載
供稿:網友
Oracle是C/S(Client/Server)結構的大型數據庫,主要語言是4GLSQL語言,具有功能強大而簡單易學的優點。C/S結構的工作過程是:當客戶端(C端)輸入并發送一條SQL語句后,便通過網絡送到服務器端(S端),在那里被分析執行然后再將結果通過網絡返回到客戶端,此時客戶端可以再發下一條SQL語句。可見,客戶端是一條語句一條語句的發送,服務器端是一條一條的分析執行,結果再一次次的返回。但是,這樣單個的SQL語句引起了頻繁的網絡通信,大大降低了系統性能。PL/SQL是擴展SQL后的語言,PL/SQL塊作為一個單位發送,使用了較少的網絡通信,而且在運行中能根據條件,決定執行或重復執行什么語句,既保留了SQL的強大性,又彌補了不足。 1 提高程序的運行速度 1.1 使用存儲過程 存儲過程是Oracle數據庫的一種對象,是一種帶名的PL/SQL過程程序塊,它在創建后,被數據庫服務器進行語法和句法分析,以編譯了的形式存儲在數據庫中,可以被有權用戶在任何需要的地方調用。當客戶端應用程序調用時,只需發送一條調用命令,數據庫服務器就會執行該過程。與一般的PL/SQL塊主要的不同是:無需在網上傳送大量的源程序代碼,只傳送一條調用命令,這就大大降低了網絡通信的負擔;而且只在剛創建時分析編譯一次,每次調用直接執行編譯了的代碼,因此運行速度較快。 在實際開發時,對于具有共同特性的功能模塊最好使用存儲過程,調用時通過使用不同的實際參數值來實現某一具體的處理。假如能充分利用存儲過程來完成應用系統的操作與處理,則可大大提高系統的運行性能。 1.2 編寫可重用共享池中已有語句的SQL語句 共享內存緩沖區和后臺進程合稱為一個Oracle實例。當啟動一個Oracle實例時,會有許多的Oracle后臺進程被啟動,每個進程都負責運行數據庫的不同方面的處理,各進程通過共享內存彼此之間進行通信,該塊內存就是系統全局區SGA。SGA被分隔為不同的區域,其中一個稱作共享池(Shared Pool)的區域中包含了發送給數據庫的SQL語句的正文和PL/SQL塊,以及它們經過分析后的表示形式與執行方案,其中執行方案是數據庫實際處理該語句的方法,例如,需要訪問哪些表和索引、是否需要執行排序操作等等。 因為要執行一條SQL 語句,數據庫就必須確定其執行方案。當數據庫從客戶應用程序接收到一條SQL語句時,它首先檢查是否該語句在共享池中。若在,那么不重新對其分析而是重復使用已經在共享池中的形式及執行方案;若不在,則對該語句進行分析,得到新的分析形式與執行方案并進行存儲,覆蓋共享池中以前的內容。 由此可以看出,編寫可重用共享池中語句的SQL語句就顯得十分必要,因為避免不必要的重新分析,會很大程度上減小服務器所承擔的工作量。要想重復使用共享池中的語句,就應該編寫與其格式一致的語句,包括字母的大小寫、標點符號、換行的位置等都要一致。下面推薦一種有效實用的方法。 1.2.1 SQL語句各部分的格式 一條語句可以一行也可以分多行書寫,但最好換行書寫,每一子句一行,且每行的第一個要害字與第一行的要害字的尾部對齊,這樣做以確保每次使用同一條語句時分行的位置一致,而不要讓語句在第80列偶然溢出到下一行,例如下面的格式中字母T、M、E、D、P是對齊的,一子句占了一行:
    SELECT col1,col2    FROM table—name1    WHERE col1 > col2    AND col2 > col3    GROUP BY col1;
當剛執行過上述語句后,若又接收到下面的語句:
    SELECT col1,col2    FROM table—name2    WHERE col1 > col2    AND col2 > col3    GROUP BY col2; 
則通過檢查認為與共享池中的語句一致,可重復使用共享池中的執行方案,不必重新分析。 而下面的的語句被認為是不同的,因為分行的位置不同,需要重新進行分析。
    SELECT col1,col2 FROM table—name2    WHERE col1 > col2    AND col2 > col3    GROUP BY col1 ; 
1.2.2 字母大小寫采用一致約定 要害字、保留字大寫,用戶聲明的標識符小寫。請看下面的兩條語句:
    SELECT xm    FROM student;    與    select xm    FROM student;
比較的結果是這兩句不匹配或者說不等價,因為第一句中的SELECT是大寫的,而第二句的是小寫的。 1.2.3 其它,如運算符兩側各留一個空格等 總之,設計自己的編寫約定并遵守這些約定,使要處理的語句與共享池中的相一致,有助于運行性能的提高。2 提高可維護性 2.1 編寫觸發器 對表中數據進行修改、刪除或插入是非經常見的操作。當表被修改時,應該自動給其他需要執行操作的程序發信號。觸發器可以完成這一功能。在Oracle8中,觸發器是一段程序,但是這段程序是當發生INSERT、UPDATE或DELETE操作時被自動執行的,與過程的調用(是通過調用語句調用執行)不同,因此當某事件的發生引起連環更新或其他的相應操作時,通過自動執行觸發器代碼實現而不用人工干預,大大減輕了維護工作,同時也很好的保證了數據的一致性。 觸發器的優點是自動激發,不管什么引起數據修改(來自程序的或是來自用戶的),它們都工作,所以經常用于不同數據表中的相關數據的串接修改。采用這種方法實現數據表間接的數據關聯可由數據庫集中維護控制,規則變化時只需修改相應的觸發器即可,這樣系統易于維護,提高了工作效率。 2.2 使用%TYPE、%ROWTYPE方式聲明變量 程序設計中經常要通過變量來實現程序間的數據傳遞,即將表中數據賦值給變量,或是把變量值插入到表中。而要完成這些操作的前提就是,表中數據與變量類型要一致。然而在實際中,表中數據或類型、或寬度有時要變化,一旦變化,就必須去修改程序中的變量聲明部分,否則程序將不能正常運行。為了減少這部分程序的修改,編程時使用%TYPE、%ROWTYPE方式聲明變量,使變量聲明的類型與表中的保持同步,隨表的變化而變化,這樣的程序在一定程度上具有更強的通用性。 3 提高程序自檢能力 一個好的應用系統不僅要有好的用戶界面、齊全的功能處理模塊,而且要有很強的錯誤處理能力。因此要求編程人員要猜測可能的各種情況(聲明異常情態并引發),并盡可能從錯誤中恢復過來(編寫相應異常情態處理器代碼),這就是Oracle8中的異常部分的程序設計內容。然而這部分的設計絕非易事。在異常部分的最后設置OTHERS異常情態處理器是個很好的編程習慣,因為它為運行時刻捕捉到的其它錯誤指明了處理去向,從而保證了程序的正常運行。格式如下:
    BEGIN    …    EXCEPTION     WHEN excep—name1 THEN     …     WHEN excep—name2 THEN     …     WHEN OTHERS THEN     …    END;
但是對程序中出現的錯誤要做到正確的處理(即正確選擇異常處理器并執行它),還必須弄清楚異常情態的傳播問題。 異常情態的傳播指的是當在程序塊的聲明、執行、異常部分分別出現異常情態時,或在本塊中沒有相應的異常處理器時會將這個異常情態傳播到哪里,會去激發那個塊中的處理器。傳播規則是這樣的: 當一個異常情態是在塊的執行部分引發的(最常見的),PL/SQL使用下面的規則確定激活哪個異常處理器。(1)若當前塊對該異常情態設置了處理器,則執行它并成功完成該塊的執行,然后控制轉給包含塊。(2)若當前塊沒有該處理器,則通過在包含塊中引發它來傳播異常情態。然后對包含塊執行步驟1。另外,無論是在聲明部分引發了一個異常情態,還是在異常處理部分引發,則該異常情態將立即傳播給包含塊。在包含塊引用上述規則進行異常情態的處理,即使在當前塊設置了OTHERS處理器也不會被執行。 4 易于閱讀 對于子程序、觸發器、包等帶名的程序塊,使用結束標識。例如:
CREATE OR REPLACE PROCEDURE addstud IS…BEGIN…END addstud;/* 此處的過程名add是可選的,寫上較好,與塊開始的CREATE相對應 */
●采用統一的標識符命名規則。對于諸如變量名、子程序名、觸發器名等數據庫對象命名時,應盡量能表示其功能用途或含義。 ●對于過程性語句與程序塊采用縮進書寫風格,會使得程序結構清楚、層次分明、易閱讀。 ●采用統一的字母大小寫。盡管PL/SQL程序中不區分大小寫,但是采用統一的字母大小寫(如前文敘述的大小寫約定)將在很大程度上提高程序的可閱讀性。 ●加注釋。 ●一條語句分多行書寫,不讓其自動分行。 這方面的內容大家都已很熟悉,不再詳述了。 總之,良好的程序設計風格,可以在多個方面提高系統的性能,提高開發效率,很值得我們在工作中給以重視。


上一篇:用Windows腳本宿主自動化Oracle工具

下一篇:專家調優秘密之改善Oracle數據庫性能

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97人人爽人人喊人人模波多| 中文精品99久久国产香蕉| 爽爽爽爽爽爽爽成人免费观看| 日韩免费观看av| 精品久久久在线观看| 国产欧美精品久久久| 亚洲欧美日韩一区二区三区在线| 91精品国产91久久久久久| 欧美美女15p| 中文字幕亚洲欧美一区二区三区| 久久精品亚洲热| 久久精彩免费视频| 久久99国产精品久久久久久久久| 美女久久久久久久久久久| 国产精品视频白浆免费视频| 久久久精品中文字幕| 亚洲xxx自由成熟| 中文字幕精品av| 蜜臀久久99精品久久久无需会员| 欧洲一区二区视频| 91久久精品美女高潮| 亚洲国产一区二区三区四区| 欧美精品www| 91在线观看免费观看| 精品国内自产拍在线观看| 日韩美女在线看| 日韩精品视频在线免费观看| 日韩免费观看高清| 国产精品91在线观看| 色偷偷9999www| 亚洲香蕉成视频在线观看| 国产精品高清在线观看| 91精品啪aⅴ在线观看国产| 久久久久九九九九| 美女999久久久精品视频| 97成人在线视频| 亚洲欧美国产一本综合首页| 亚洲欧美一区二区三区情侣bbw| 亚洲精品福利免费在线观看| 欧美亚洲午夜视频在线观看| 国产在线拍揄自揄视频不卡99| 国产午夜精品免费一区二区三区| 欧美日韩在线免费观看| 一区二区三区天堂av| 欧美三级免费观看| 韩国19禁主播vip福利视频| 国产日韩在线看片| 日韩第一页在线| 久青草国产97香蕉在线视频| 色yeye香蕉凹凸一区二区av| 日韩欧美综合在线视频| 国产精品久久久久久影视| 久久人人97超碰精品888| 538国产精品一区二区免费视频| 亚洲第一国产精品| 国产精品国产三级国产aⅴ9色| 91精品91久久久久久| 欧美丝袜第一区| 亚洲成av人乱码色午夜| 92国产精品久久久久首页| 久久91精品国产| 久久久久久97| 久久99久久99精品中文字幕| 日韩电影免费在线观看中文字幕| 日产精品99久久久久久| 久久久久久香蕉网| 久久久av亚洲男天堂| 91精品国产91久久久久久不卡| 精品精品国产国产自在线| 国产精品美女无圣光视频| 亚洲国产中文字幕在线观看| 久久久视频精品| 92看片淫黄大片看国产片| 欧美福利视频在线观看| 国产欧美精品一区二区三区-老狼| 91美女片黄在线观看游戏| 亚洲伊人久久大香线蕉av| 亚洲级视频在线观看免费1级| 欧美在线视频a| 国产欧美日韩精品丝袜高跟鞋| 深夜福利日韩在线看| 日韩有码在线电影| 欧美视频免费在线| 91精品国产91| 国产日韩中文字幕在线| 亚洲综合av影视| 宅男66日本亚洲欧美视频| 久久91亚洲人成电影网站| 中国日韩欧美久久久久久久久| 中文字幕一精品亚洲无线一区| 777777777亚洲妇女| 在线亚洲国产精品网| 久久影院在线观看| 欧美性受xxxx白人性爽| 久久久久久久久综合| 欧美电影院免费观看| 亚洲在线观看视频网站| 精品动漫一区二区三区| 国产成人午夜视频网址| 欧美大尺度电影在线观看| 亚洲欧美激情精品一区二区| 久久久久久噜噜噜久久久精品| 成人妇女免费播放久久久| 日韩av电影在线免费播放| 日本国产欧美一区二区三区| 欧美成人网在线| 日韩亚洲欧美中文在线| 精品国内亚洲在观看18黄| 久久福利视频网| 国产亚洲欧美日韩精品| 久久久久久91香蕉国产| 91精品国产综合久久久久久久久| 成人美女av在线直播| 亚洲xxxxx电影| 中文字幕欧美日韩精品| 日韩va亚洲va欧洲va国产| 草民午夜欧美限制a级福利片| 夜夜嗨av一区二区三区免费区| 中文在线资源观看视频网站免费不卡| 精品久久久久久国产| 日韩高清有码在线| 欧美老肥婆性猛交视频| 欧美插天视频在线播放| 成人女保姆的销魂服务| 81精品国产乱码久久久久久| 欧美老少做受xxxx高潮| 久久久久久久久久久人体| 亚洲精品国产电影| 91视频免费在线| 中文字幕亚洲综合久久| 亚洲va久久久噜噜噜久久天堂| 91最新国产视频| 欧美巨乳美女视频| 日韩久久午夜影院| 国产精品入口免费视频一| 国产成人精品综合久久久| 色综合久久悠悠| 国产+成+人+亚洲欧洲| 视频在线观看一区二区| 欧美日韩国产限制| 欧美日韩性生活视频| 日韩欧美主播在线| 国产一区二区三区在线播放免费观看| 97久久国产精品| 亚洲综合日韩在线| 欧美中文在线观看| 欧美日韩美女在线观看| 在线免费观看羞羞视频一区二区| 久久综合伊人77777蜜臀| 91久久嫩草影院一区二区| 日韩免费高清在线观看| 久久精品中文字幕一区| 亚洲女人天堂成人av在线| 亚洲欧美国产一区二区三区| 欧美在线性爱视频| 成人日韩在线电影| 亚洲日韩欧美视频| 久久久久久国产三级电影| 97精品在线观看| 欧美孕妇孕交黑巨大网站| 国产精品91久久久| 色yeye香蕉凹凸一区二区av| 国产精品成人aaaaa网站| 久久视频免费观看|