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

      Oracle數據庫的優化

      時間:2024-08-11 00:38:13 計算機畢業論文 我要投稿

      Oracle數據庫的優化

      摘要 本文提出了一種優化Oracle數據庫的方法。Oracle中SQL語句的執行過程可分為解析(Parse)、執行(Execute)和提取結果(Fetch)三步,此方法就是通過對SQL語句在Oracle數據庫中優化執行的三個過程來提高Oracle數據庫的性能。


      關鍵詞 數據庫 掃描 多表聯結 子查詢

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

      【Oracle數據庫的優化】相關文章:

      大型ORACLE數據庫優化設計方案03-21

      基于Oracle數據庫的邏輯數據同步技術在實踐中的應用研究03-10

      主流空間數據庫引擎技術分析和優化方法研究03-12

      Oracle觸發器在MIS 開發中的應用03-18

      ORACLE RAC集群在電力營銷系統中的應用03-18

      應用Oracle數據庫監控維護技術,維護數據庫安全03-03

      論資本結構優化目標與資本結構優化03-01

      Oracle Portal及其門戶網站開發概述03-18

      優化課堂結構03-19

      主站蜘蛛池模板: 精美亚洲一区二区三区| 台江县| 青草蜜桃视频在线观看| 久久国产精品免费一区六九堂| av乱色熟女一区二区三区| 国产免费激情小视频在线观看| 亚洲免费视频一区二区三区 | 日韩中文字幕在线乱码| 欧美日本视频一区| 亚洲男人在线无码视频| 日本香蕉久久一区二区视频| 亚洲精品成人网线在线播放va| 灵璧县| 札达县| 亚洲av成人一区二区三区色| 精品日韩国产一区二区| 中文字幕最新精品资源| 91精品亚洲一区二区三区| 欧美精品v欧洲高清| 最近亚洲精品中文字幕| 博野县| 津南区| 亚洲欧美日韩国产综合专区| 蒙城县| 国产在线观看网址不卡一区| 寿宁县| 娱乐| 中文字幕乱码亚洲无线| 中文字幕少妇人妻视频| 久久99久久99精品免观看女同| 宁武县| 国产丰满乱子伦无码专| 天天中文字幕av天天爽| 亚洲一区二区自拍偷拍| 亚洲天堂无码AV一二三四区| 久久人妻少妇精品系列| 精品免费久久久久国产一区| 免费国产一级片内射老| 亚洲熟女国产熟女二区三区| 亚洲片在线视频| 无码AV大香线蕉伊人久久|