日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Oracle中PL/SQL編程對(duì)系統(tǒng)性能的影響

瀏覽:200日期:2023-11-13 15:12:32
Oracle是C/S(Client/Server)結(jié)構(gòu)的大型數(shù)據(jù)庫(kù),主要語言是4GLSQL語言,具有功能強(qiáng)大而簡(jiǎn)單易學(xué)的優(yōu)點(diǎn)。C/S結(jié)構(gòu)的工作過程是:當(dāng)客戶端(C端)輸入并發(fā)送一條SQL語句后,便通過網(wǎng)絡(luò)送到服務(wù)器端(S端),在那里被分析執(zhí)行然后再將結(jié)果通過網(wǎng)絡(luò)返回到客戶端,此時(shí)客戶端可以再發(fā)下一條SQL語句。可見,客戶端是一條語句一條語句的發(fā)送,服務(wù)器端是一條一條的分析執(zhí)行,結(jié)果再一次次的返回。但是,這樣單個(gè)的SQL語句引起了頻繁的網(wǎng)絡(luò)通信,大大降低了系統(tǒng)性能。PL/SQL是擴(kuò)展SQL后的語言,PL/SQL塊作為一個(gè)單位發(fā)送,使用了較少的網(wǎng)絡(luò)通信,而且在運(yùn)行中能根據(jù)條件,決定執(zhí)行或重復(fù)執(zhí)行什么語句,既保留了SQL的強(qiáng)大性,又彌補(bǔ)了不足。 1 提高程序的運(yùn)行速度 1.1 使用存儲(chǔ)過程 存儲(chǔ)過程是Oracle數(shù)據(jù)庫(kù)的一種對(duì)象,是一種帶名的PL/SQL過程程序塊,它在創(chuàng)建后,被數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行語法和句法分析,以編譯了的形式存儲(chǔ)在數(shù)據(jù)庫(kù)中,可以被有權(quán)用戶在任何需要的地方調(diào)用。當(dāng)客戶端應(yīng)用程序調(diào)用時(shí),只需發(fā)送一條調(diào)用命令,數(shù)據(jù)庫(kù)服務(wù)器就會(huì)執(zhí)行該過程。與一般的PL/SQL塊主要的不同是:無需在網(wǎng)上傳送大量的源程序代碼,只傳送一條調(diào)用命令,這就大大降低了網(wǎng)絡(luò)通信的負(fù)擔(dān);而且只在剛創(chuàng)建時(shí)分析編譯一次,每次調(diào)用直接執(zhí)行編譯了的代碼,因此運(yùn)行速度較快。 在實(shí)際開發(fā)時(shí),對(duì)于具有共同特性的功能模塊最好使用存儲(chǔ)過程,調(diào)用時(shí)通過使用不同的實(shí)際參數(shù)值來實(shí)現(xiàn)某一具體的處理。假如能充分利用存儲(chǔ)過程來完成應(yīng)用系統(tǒng)的操作與處理,則可大大提高系統(tǒng)的運(yùn)行性能。 1.2 編寫可重用共享池中已有語句的SQL語句 共享內(nèi)存緩沖區(qū)和后臺(tái)進(jìn)程合稱為一個(gè)Oracle實(shí)例。當(dāng)啟動(dòng)一個(gè)Oracle實(shí)例時(shí),會(huì)有許多的Oracle后臺(tái)進(jìn)程被啟動(dòng),每個(gè)進(jìn)程都負(fù)責(zé)運(yùn)行數(shù)據(jù)庫(kù)的不同方面的處理,各進(jìn)程通過共享內(nèi)存彼此之間進(jìn)行通信,該塊內(nèi)存就是系統(tǒng)全局區(qū)SGA。SGA被分隔為不同的區(qū)域,其中一個(gè)稱作共享池(Shared Pool)的區(qū)域中包含了發(fā)送給數(shù)據(jù)庫(kù)的SQL語句的正文和PL/SQL塊,以及它們經(jīng)過分析后的表示形式與執(zhí)行方案,其中執(zhí)行方案是數(shù)據(jù)庫(kù)實(shí)際處理該語句的方法,例如,需要訪問哪些表和索引、是否需要執(zhí)行排序操作等等。 因?yàn)橐獔?zhí)行一條SQL 語句,數(shù)據(jù)庫(kù)就必須確定其執(zhí)行方案。當(dāng)數(shù)據(jù)庫(kù)從客戶應(yīng)用程序接收到一條SQL語句時(shí),它首先檢查是否該語句在共享池中。若在,那么不重新對(duì)其分析而是重復(fù)使用已經(jīng)在共享池中的形式及執(zhí)行方案;若不在,則對(duì)該語句進(jìn)行分析,得到新的分析形式與執(zhí)行方案并進(jìn)行存儲(chǔ),覆蓋共享池中以前的內(nèi)容。 由此可以看出,編寫可重用共享池中語句的SQL語句就顯得十分必要,因?yàn)楸苊獠槐匾闹匦路治觯瑫?huì)很大程度上減小服務(wù)器所承擔(dān)的工作量。要想重復(fù)使用共享池中的語句,就應(yīng)該編寫與其格式一致的語句,包括字母的大小寫、標(biāo)點(diǎn)符號(hào)、換行的位置等都要一致。下面推薦一種有效實(shí)用的方法。 1.2.1 SQL語句各部分的格式 一條語句可以一行也可以分多行書寫,但最好換行書寫,每一子句一行,且每行的第一個(gè)要害字與第一行的要害字的尾部對(duì)齊,這樣做以確保每次使用同一條語句時(shí)分行的位置一致,而不要讓語句在第80列偶然溢出到下一行,例如下面的格式中字母T、M、E、D、P是對(duì)齊的,一子句占了一行: SELECT col1,col2FROM table—name1WHERE col1 > col2AND col2 > col3GROUP BY col1;當(dāng)剛執(zhí)行過上述語句后,若又接收到下面的語句: SELECT col1,col2FROM table—name2WHERE col1 > col2AND col2 > col3GROUP BY col2; 則通過檢查認(rèn)為與共享池中的語句一致,可重復(fù)使用共享池中的執(zhí)行方案,不必重新分析。 而下面的的語句被認(rèn)為是不同的,因?yàn)榉中械奈恢貌煌枰匦逻M(jìn)行分析。 SELECT col1,col2 FROM table—name2WHERE col1 > col2AND col2 > col3GROUP BY col1 ; 1.2.2 字母大小寫采用一致約定 要害字、保留字大寫,用戶聲明的標(biāo)識(shí)符小寫。請(qǐng)看下面的兩條語句: SELECT xmFROM student;與select xmFROM student;比較的結(jié)果是這兩句不匹配或者說不等價(jià),因?yàn)榈谝痪渲械腟ELECT是大寫的,而第二句的是小寫的。 1.2.3 其它,如運(yùn)算符兩側(cè)各留一個(gè)空格等 總之,設(shè)計(jì)自己的編寫約定并遵守這些約定,使要處理的語句與共享池中的相一致,有助于運(yùn)行性能的提高。2 提高可維護(hù)性 2.1 編寫觸發(fā)器 對(duì)表中數(shù)據(jù)進(jìn)行修改、刪除或插入是非經(jīng)常見的操作。當(dāng)表被修改時(shí),應(yīng)該自動(dòng)給其他需要執(zhí)行操作的程序發(fā)信號(hào)。觸發(fā)器可以完成這一功能。在Oracle8中,觸發(fā)器是一段程序,但是這段程序是當(dāng)發(fā)生INSERT、UPDATE或DELETE操作時(shí)被自動(dòng)執(zhí)行的,與過程的調(diào)用(是通過調(diào)用語句調(diào)用執(zhí)行)不同,因此當(dāng)某事件的發(fā)生引起連環(huán)更新或其他的相應(yīng)操作時(shí),通過自動(dòng)執(zhí)行觸發(fā)器代碼實(shí)現(xiàn)而不用人工干預(yù),大大減輕了維護(hù)工作,同時(shí)也很好的保證了數(shù)據(jù)的一致性。 觸發(fā)器的優(yōu)點(diǎn)是自動(dòng)激發(fā),不管什么引起數(shù)據(jù)修改(來自程序的或是來自用戶的),它們都工作,所以經(jīng)常用于不同數(shù)據(jù)表中的相關(guān)數(shù)據(jù)的串接修改。采用這種方法實(shí)現(xiàn)數(shù)據(jù)表間接的數(shù)據(jù)關(guān)聯(lián)可由數(shù)據(jù)庫(kù)集中維護(hù)控制,規(guī)則變化時(shí)只需修改相應(yīng)的觸發(fā)器即可,這樣系統(tǒng)易于維護(hù),提高了工作效率。 2.2 使用%TYPE、%ROWTYPE方式聲明變量 程序設(shè)計(jì)中經(jīng)常要通過變量來實(shí)現(xiàn)程序間的數(shù)據(jù)傳遞,即將表中數(shù)據(jù)賦值給變量,或是把變量值插入到表中。而要完成這些操作的前提就是,表中數(shù)據(jù)與變量類型要一致。然而在實(shí)際中,表中數(shù)據(jù)或類型、或?qū)挾扔袝r(shí)要變化,一旦變化,就必須去修改程序中的變量聲明部分,否則程序?qū)⒉荒苷_\(yùn)行。為了減少這部分程序的修改,編程時(shí)使用%TYPE、%ROWTYPE方式聲明變量,使變量聲明的類型與表中的保持同步,隨表的變化而變化,這樣的程序在一定程度上具有更強(qiáng)的通用性。 3 提高程序自檢能力 一個(gè)好的應(yīng)用系統(tǒng)不僅要有好的用戶界面、齊全的功能處理模塊,而且要有很強(qiáng)的錯(cuò)誤處理能力。因此要求編程人員要猜測(cè)可能的各種情況(聲明異常情態(tài)并引發(fā)),并盡可能從錯(cuò)誤中恢復(fù)過來(編寫相應(yīng)異常情態(tài)處理器代碼),這就是Oracle8中的異常部分的程序設(shè)計(jì)內(nèi)容。然而這部分的設(shè)計(jì)絕非易事。在異常部分的最后設(shè)置OTHERS異常情態(tài)處理器是個(gè)很好的編程習(xí)慣,因?yàn)樗鼮檫\(yùn)行時(shí)刻捕捉到的其它錯(cuò)誤指明了處理去向,從而保證了程序的正常運(yùn)行。格式如下: BEGIN…EXCEPTION WHEN excep—name1 THEN … WHEN excep—name2 THEN … WHEN OTHERS THEN …END;但是對(duì)程序中出現(xiàn)的錯(cuò)誤要做到正確的處理(即正確選擇異常處理器并執(zhí)行它),還必須弄清楚異常情態(tài)的傳播問題。 異常情態(tài)的傳播指的是當(dāng)在程序塊的聲明、執(zhí)行、異常部分分別出現(xiàn)異常情態(tài)時(shí),或在本塊中沒有相應(yīng)的異常處理器時(shí)會(huì)將這個(gè)異常情態(tài)傳播到哪里,會(huì)去激發(fā)那個(gè)塊中的處理器。傳播規(guī)則是這樣的: 當(dāng)一個(gè)異常情態(tài)是在塊的執(zhí)行部分引發(fā)的(最常見的),PL/SQL使用下面的規(guī)則確定激活哪個(gè)異常處理器。(1)若當(dāng)前塊對(duì)該異常情態(tài)設(shè)置了處理器,則執(zhí)行它并成功完成該塊的執(zhí)行,然后控制轉(zhuǎn)給包含塊。(2)若當(dāng)前塊沒有該處理器,則通過在包含塊中引發(fā)它來傳播異常情態(tài)。然后對(duì)包含塊執(zhí)行步驟1。另外,無論是在聲明部分引發(fā)了一個(gè)異常情態(tài),還是在異常處理部分引發(fā),則該異常情態(tài)將立即傳播給包含塊。在包含塊引用上述規(guī)則進(jìn)行異常情態(tài)的處理,即使在當(dāng)前塊設(shè)置了OTHERS處理器也不會(huì)被執(zhí)行。 4 易于閱讀 對(duì)于子程序、觸發(fā)器、包等帶名的程序塊,使用結(jié)束標(biāo)識(shí)。例如: CREATE OR REPLACE PROCEDURE addstud IS…BEGIN…END addstud;/* 此處的過程名add是可選的,寫上較好,與塊開始的CREATE相對(duì)應(yīng) */●采用統(tǒng)一的標(biāo)識(shí)符命名規(guī)則。對(duì)于諸如變量名、子程序名、觸發(fā)器名等數(shù)據(jù)庫(kù)對(duì)象命名時(shí),應(yīng)盡量能表示其功能用途或含義。 ●對(duì)于過程性語句與程序塊采用縮進(jìn)書寫風(fēng)格,會(huì)使得程序結(jié)構(gòu)清楚、層次分明、易閱讀。 ●采用統(tǒng)一的字母大小寫。盡管PL/SQL程序中不區(qū)分大小寫,但是采用統(tǒng)一的字母大小寫(如前文敘述的大小寫約定)將在很大程度上提高程序的可閱讀性。 ●加注釋。 ●一條語句分多行書寫,不讓其自動(dòng)分行。 這方面的內(nèi)容大家都已很熟悉,不再詳述了。 總之,良好的程序設(shè)計(jì)風(fēng)格,可以在多個(gè)方面提高系統(tǒng)的性能,提高開發(fā)效率,很值得我們?cè)诠ぷ髦薪o以重視。
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产成人1区| 精品网站aaa| 国内揄拍国内精品久久| 亚洲色图综合| 蜜桃国内精品久久久久软件9| 欧美激情综合| 青青草国产精品亚洲专区无| 亚洲成人免费| 激情综合网站| 亚洲免费激情| 视频一区在线播放| 蜜臀91精品一区二区三区| 亚洲激情久久| 免费在线看一区| 欧美成人日韩| 亚洲一卡久久| 亚洲精品影院在线观看| 香蕉久久一区| 日韩精品一区二区三区中文在线| 日本在线视频一区二区| 国产日韩在线观看视频| 国产精品一站二站| 神马久久午夜| 亚洲经典在线| 欧美日韩午夜电影网| 精品国产亚洲一区二区三区在线 | 亚洲精品在线国产| 欧美精品福利| 久久99视频| 成人在线网站| 免费观看在线综合色| 国产精品夜夜夜| 99成人超碰| 四虎在线精品| 国产一区二区三区天码| 亚洲精品一二三区区别| 欧美日韩亚洲国产精品| 国产色播av在线| 日韩中文字幕91| 成人国产综合| 三级久久三级久久久| 国产一区国产二区国产三区| 国产91久久精品一区二区| 欧美成人国产| 久久不见久久见中文字幕免费 | 国产日产一区| 亚洲一级影院| 精品国产欧美日韩| 日韩欧美精品一区二区综合视频| av中文资源在线资源免费观看| 四虎4545www国产精品| 欧美一级一区| 一本一道久久a久久| 日韩高清中文字幕一区二区| 男女精品网站| 色婷婷久久久| 91视频久久| 麻豆精品视频在线观看免费| 日韩亚洲国产欧美| 亚洲天堂1区| 91亚洲自偷观看高清| 婷婷精品久久久久久久久久不卡| 亚洲1234区| 亚洲风情在线资源| 精品国产中文字幕第一页| 日本成人在线不卡视频| 免费国产自线拍一欧美视频| 播放一区二区| 99久久激情| 99久精品视频在线观看视频| 久久久精品国产**网站| 日本va欧美va欧美va精品| 久久亚洲美女| 亚洲专区视频| 日韩精品91亚洲二区在线观看| 久久成人精品| 美女国产一区| 亚洲精品动态| 国产精品一区二区精品| 中文字幕亚洲精品乱码| 亚洲一级大片| 欧美日韩一区二区国产| 免费在线观看一区| www.九色在线| 在线国产一区| 美日韩精品视频| 国产调教精品| 久久久一本精品| 日韩一区精品视频| 国产精品成人自拍| 不卡福利视频| 亚洲开心激情| 国模大尺度视频一区二区| 久久在线免费| 欧美日韩一区二区三区在线电影| 久草精品视频| 欧美日韩国产在线一区| 日韩精品乱码av一区二区| 国产精品对白| 一区在线免费| 欧美片网站免费| 精品中文字幕一区二区三区av| 日本亚州欧洲精品不卡| 国产成人精品亚洲线观看| 国产综合精品一区| 国产精品久久| 天使萌一区二区三区免费观看| 国产精品对白| 国产模特精品视频久久久久| 国产精品欧美三级在线观看| 久久久男人天堂| 69堂免费精品视频在线播放| 久久免费黄色| 国产极品模特精品一二| 亚洲精品va| 里番精品3d一二三区| 中文精品电影| 国产在线欧美| 日韩中文字幕高清在线观看| 欧美日韩一区二区三区不卡视频| 国产精品腿扒开做爽爽爽挤奶网站| 成人台湾亚洲精品一区二区| 亚洲人www| 视频一区视频二区在线观看| 中文字幕在线看片| 国产在线一区不卡| 久久一区视频| 精品美女视频 | 99国产精品自拍| 亚洲免费福利| 福利一区在线| 超碰成人av| 美女视频免费精品| 日韩av一二三| 女同性一区二区三区人了人一| 国产视频网站一区二区三区| 蜜桃传媒麻豆第一区在线观看 | 国产日产高清欧美一区二区三区| 午夜欧美精品| 亚洲精品一区二区妖精| 999视频精品| 久久伦理在线| 日韩黄色大片| 精品一区二区三区四区五区| 国产日韩1区| 卡一精品卡二卡三网站乱码| 国产欧美日韩影院| 国产欧美日韩| 精品理论电影在线| 精品丝袜久久| 国产精品久久久久蜜臀| 91精品99| 亚洲精品伊人| 日本欧美韩国一区三区| 日本不卡视频在线观看| 日本亚洲三级在线| 激情综合五月| 91精品精品| 亚洲免费精品| 国产精品久一| 99亚洲精品| 综合视频一区| 在线一区二区三区视频| 亚洲人妖在线| 中文字幕在线视频久| 久久九九精品| 天堂成人免费av电影一区| 亚洲一区成人| 热三久草你在线| 免费看精品久久片| 亚洲精品在线二区| 国产中文字幕一区二区三区| 伊人久久亚洲影院| 91免费精品| 天堂精品久久久久| 麻豆一区在线| 亚洲ww精品| 亚洲自拍另类| 国产精品4hu.www| 性欧美videohd高精| 国产日韩高清一区二区三区在线| 99免费精品| 精品视频一区二区三区四区五区| 免费精品国产| 麻豆国产欧美日韩综合精品二区| 欧美羞羞视频| 精品国产第一福利网站| 亚洲免费毛片| 精品免费av在线| 久久av导航| 亚洲精品美女| 亚洲经典在线| 少妇精品导航| 国产欧美一区| 亚洲天堂日韩在线| 99国产精品视频免费观看一公开 | 在线一区电影| 99久久激情| 精品亚洲美女网站| 精品国产美女a久久9999|