中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      Oracle數(shù)據(jù)庫(kù)的優(yōu)化

      時(shí)間:2024-08-11 00:38:13 計(jì)算機(jī)畢業(yè)論文 我要投稿

      Oracle數(shù)據(jù)庫(kù)的優(yōu)化

      摘要 本文提出了一種優(yōu)化Oracle數(shù)據(jù)庫(kù)的方法。Oracle中SQL語(yǔ)句的執(zhí)行過(guò)程可分為解析(Parse)、執(zhí)行(Execute)和提取結(jié)果(Fetch)三步,此方法就是通過(guò)對(duì)SQL語(yǔ)句在Oracle數(shù)據(jù)庫(kù)中優(yōu)化執(zhí)行的三個(gè)過(guò)程來(lái)提高Oracle數(shù)據(jù)庫(kù)的性能。


      關(guān)鍵詞 數(shù)據(jù)庫(kù) 掃描 多表聯(lián)結(jié) 子查詢

      1 如何優(yōu)化Parse
      1. 1 SQL語(yǔ)句的Parse處理步驟:
      1) 計(jì)算語(yǔ)句值
      2) 共享池中有無(wú)與此語(yǔ)句值相同的語(yǔ)句?
      3) 共享池中有與此語(yǔ)句字符完全匹配的語(yǔ)句?
      4) 準(zhǔn)備要運(yùn)行的SQL語(yǔ)句
      5) 為新語(yǔ)句在共享池中創(chuàng)建空間
      6) 將語(yǔ)句存放在共享池中
      7) 修改共享池圖,標(biāo)明語(yǔ)句的值和在共享池中的位置
      8) 執(zhí)行準(zhǔn)備好的SQL語(yǔ)句
      最理想的是,語(yǔ)句只執(zhí)行1、2、3和8步來(lái)進(jìn)行處理。不經(jīng)過(guò)2、3步來(lái)測(cè)試被傳給Oracle的語(yǔ)句要使用1~8步進(jìn)行處理。只經(jīng)過(guò)1、2、3、8的SQL語(yǔ)句要比經(jīng)過(guò)1~8步的語(yǔ)句更為有效。
      1.2 在共享池中重用SQL語(yǔ)句
      當(dāng)SQL語(yǔ)句被傳遞給Oracle處理時(shí),其秘訣是重復(fù)使用已經(jīng)在共享池中的語(yǔ)句,而不是讓Oracle在接受語(yǔ)句時(shí)去準(zhǔn)備新的語(yǔ)句。前面表明,如果Oracle接受了一個(gè)與共享池中的語(yǔ)句相一致的語(yǔ)句,就重用共享池中的語(yǔ)句。
      Oracle提供在數(shù)據(jù)庫(kù)中存儲(chǔ)代碼的能力。當(dāng)應(yīng)用系統(tǒng)開始運(yùn)行時(shí),從數(shù)據(jù)庫(kù)中讀取代碼(可用PL/SQL語(yǔ)句編制)并像其它語(yǔ)句那樣傳遞到共享池中去處理。從數(shù)據(jù)庫(kù)中取出的代碼是編譯過(guò)的并駐留在共享池中。
      可以利用數(shù)據(jù)庫(kù)中存儲(chǔ)的程序代碼設(shè)計(jì)應(yīng)用系統(tǒng),檢查所有的事務(wù)處理以及主要的通用的過(guò)程,研究現(xiàn)有的應(yīng)用系統(tǒng)并把主要的處理程序轉(zhuǎn)換為數(shù)據(jù)庫(kù)中存儲(chǔ)的程序代碼。在Oracle中存儲(chǔ)代碼可以通過(guò)過(guò)程、程序包、函數(shù)、觸發(fā)器等來(lái)實(shí)現(xiàn)。
      2 如何優(yōu)化Execute和Fetch
      2.1 避免無(wú)計(jì)劃的全表掃描
      全表掃描連續(xù)從表讀取所有數(shù)據(jù),而不管數(shù)據(jù)是否與查詢有關(guān)。避免不必要的全表掃描有兩個(gè)充足理由:1)全表掃描沒(méi)有選擇性
      2) 過(guò)全表掃描讀取的數(shù)據(jù)很快從SGA的緩沖區(qū)移走(如果正在掃描的表不是“高速存儲(chǔ)”的表)
      在基于規(guī)則優(yōu)化的情況下,如果下列任何條件在SGA語(yǔ)句出現(xiàn),就要對(duì)一個(gè)表進(jìn)行全表掃描。
      1) 該表無(wú)索引
      2) 對(duì)返回的行無(wú)任何限定條件(如無(wú)Where語(yǔ)句)
      3) 對(duì)數(shù)據(jù)表與任何索引主列相對(duì)應(yīng)的行無(wú)限定條件。例如,在City-State-Zip列上創(chuàng)建了三列復(fù)合索引,那么僅對(duì)State列有限定條件的查詢不能使用這個(gè)索引,因?yàn)镾tate不是索引的主列。
      4) 對(duì)索引主列的行有限定條件,但條件或者是NULL或者是不相等。例如,City列上存在索引,在所有下列情況下都不會(huì)使用索引。
      Where city is null
      Where city is not null
      Where city!=’liaoning’
      5) 對(duì)索引主列的行有限定條件,但條件在表達(dá)式里使用。例如,如果在City列上索引,那么限定條件
      Where City=’liaoning’
      可以使用索引。然而,如果限定條件是
      Where UPPER(City)=’liaoning’
      那么不會(huì)使用City列上的索引,因?yàn)镃ity列在UPPER函數(shù)里。如果將City列與文本字符串聯(lián)結(jié)在一起,也不會(huì)使用索引。例如,如果限定條件是
      Where City||’x’ like ‘liaoning%’
      那么不會(huì)使用City列上的索引。
      6) 對(duì)索引主列的行有限定條件,但條件使用Like操作以及值以‘%’開始或者值是一個(gè)賦值變量。例如,在所有下列情況下都不會(huì)使用索引:
      Where City like ‘%aonin%’
      Where City like :City_Bind_Variable
      如果表小、索引列無(wú)選擇性,基于開銷的優(yōu)化器可能決定使用全表掃描。
      2.2只使用選擇性索引
      索引的選擇性是指索引列里不同值的數(shù)目與表中記錄數(shù)的比。如果表有1000個(gè)記錄,表索引列有950個(gè)不同值,那么這個(gè)索引的選擇性就是950/1000或者0.95。最好的可能性選擇是1.0。依據(jù)非空值列的唯一索引,通常其選擇性為1.0。
      如果使用基于開銷的最優(yōu)化,優(yōu)化器不應(yīng)該使用選擇性不好的索引。
      索引的選擇性是指索引列里不同值的數(shù)目與表中記錄數(shù)的比。如果表有1000個(gè)記錄,表索引列有950個(gè)不同值,那么這個(gè)索引的選擇性就是950/1000或者0.95。最好的可能性選擇是1.0。依據(jù)非空值列的唯一索引,通常其選擇性為1.0。
      索引的選擇性是指索引列里不同值的數(shù)目與表中記錄數(shù)的比。如果表有1000個(gè)記錄,表索引列有950個(gè)不同值,那么這個(gè)索引的選擇性就是950/1000或者0.95。最好的可能性選擇是1.0。依據(jù)非空值列的唯一索引,通常其選擇性為1.0。
      2.3管理多表聯(lián)結(jié)
      Oracle提供了3個(gè)聯(lián)結(jié)操作:NESTED LOOPS、HASH JOIN和MERGE JOIN。MERGE JOIN是一組操作,在所有行被處理完之前,它不返任何記錄給下一操作。NESTED LOOPS和HASH是行操作,因此會(huì)很快將第一批記錄返回給下一個(gè)操作。
      在每個(gè)聯(lián)結(jié)選項(xiàng)里,必須執(zhí)行一些步驟以獲取最好的聯(lián)結(jié)性能。如果沒(méi)有適當(dāng)?shù)貎?yōu)化聯(lián)結(jié)操作,那么聯(lián)結(jié)所需的時(shí)間也許隨著表的增長(zhǎng)而呈指數(shù)級(jí)地增長(zhǎng)。
      2.4管理包含視圖的SQL語(yǔ)句
      如果查詢包含視圖,優(yōu)化器有兩種執(zhí)行查詢的方法:首先解決視圖然后執(zhí)行查詢,或者把視圖文本集成到查詢里去。如果首先執(zhí)行視圖,那么首先完成全部的結(jié)果集,然后用其余的查詢條件做過(guò)濾器。
      首先解決視圖會(huì)導(dǎo)致查詢性能下降的問(wèn)題,這取決于所涉及表的相對(duì)大小。如果視圖被集成到查詢里,那么查詢的條件也可以應(yīng)用于視圖里,并且可以使用一個(gè)小一些的結(jié)果集。然而在一些情況下,也許可以通過(guò)視圖分離組操作提高查詢性能。
      如果一個(gè)視圖包含集合的操作(如Group by、SUM、COUNT或者DISTINCT),那么視圖不能被集成到查詢里去。
      不使用組或者沒(méi)有集合操作的視圖的SQL語(yǔ)法可以被集成到大的查詢里去。
      2.5優(yōu)化子查詢
      當(dāng)使用自查詢時(shí),也許會(huì)碰到幾個(gè)獨(dú)特的問(wèn)題。涉及子查詢的查詢潛在問(wèn)題如

      【Oracle數(shù)據(jù)庫(kù)的優(yōu)化】相關(guān)文章:

      大型ORACLE數(shù)據(jù)庫(kù)優(yōu)化設(shè)計(jì)方案03-21

      基于Oracle數(shù)據(jù)庫(kù)的邏輯數(shù)據(jù)同步技術(shù)在實(shí)踐中的應(yīng)用研究03-10

      主流空間數(shù)據(jù)庫(kù)引擎技術(shù)分析和優(yōu)化方法研究03-12

      Oracle觸發(fā)器在MIS 開發(fā)中的應(yīng)用03-18

      ORACLE RAC集群在電力營(yíng)銷系統(tǒng)中的應(yīng)用03-18

      應(yīng)用Oracle數(shù)據(jù)庫(kù)監(jiān)控維護(hù)技術(shù),維護(hù)數(shù)據(jù)庫(kù)安全03-03

      論資本結(jié)構(gòu)優(yōu)化目標(biāo)與資本結(jié)構(gòu)優(yōu)化03-01

      Oracle Portal及其門戶網(wǎng)站開發(fā)概述03-18

      優(yōu)化課堂結(jié)構(gòu)03-19

      主站蜘蛛池模板: 亚洲中文字幕综合在线| 赣州市| 456亚洲人成在线播放网站| 国产一区中文字幕手机在线| 久久精品国产亚洲AV古装片| 国产精品人成在线观看| 亚洲欧美日韩中文综合在线不卡| 国产无卡视频在线免费观看| 东山县| 临沧市| 台湾省| 精品一区二区三区四区少妇 | 水野优香中文字幕亚洲一区| 91精品国产91热久久p| 青青草视频网站免费观看| av免费一区二区三区不卡| 长宁区| 怀仁县| 99久久综合国产精品免费| 日本高清视频一区二区在线播放| 南平市| 国产精品亚洲一区二区毛片| 乌审旗| 综合国产av一区二区三区| 客服| 亚洲免费不卡av网站| 无码熟妇人妻AV不卡| 日本一区二区三区在线播放| 日韩精品国产一区二区| 国产目拍亚洲精品区一区| 日本女优在线观看一区二区三区 | 久久久亚洲精品午夜福利| 精品久久久久久午夜| 国产精品久久久久亚洲| 色窝窝手在线视频| 北岛玲精品一区二区三区| 91亚洲国产成人久久精品| 一区二区亚洲 av免费| 黄 色 成 年 人 网 站免费| 日本在线免费观看一二区视频| 在线你懂|