說到查詢原理首先要知道oracle的體系結構。資料庫服務由:例項、資料庫檔案這兩部分構成。例項部分包括: sga(system global area) 和pga (progam global area)以及後台程序構成。例項包括:資料檔案、控制檔案、日誌檔案、引數檔案等。
當使用者寫入sql語句開始查詢時,首先進入到pga(pga作用是儲存連線資訊和許可權資訊進行預處理),sql語句在pga會生成乙個唯一的hash值(類似於身份證)。然後進入到sga的共享池裡,在共享池裡如果存在一樣的hash值,則直接進行sql語句解析。如果沒有相同的hash值那就要檢查 sql語法是否正確和語義是否正確是否有許可權,沒問題後生成乙個hash值儲存在共享池裡,再進行sql語句解析。sql解析的時候會優化器會分析諸如走索引還是不走索引等,最終選擇一條效率最高的路線,將改執行計畫儲存下來。下一步就是到資料緩衝區 去取資料了。如果恰好此時緩衝區有相應的資料,則取到該資料,查詢結束。如果資料緩衝區沒有資料,就麻煩了得到磁碟中的資料檔案去讀取資料。經過磁碟io查詢時間會大大增加。查到了就返回查詢結果,如果沒有查到則返回空。
oracle資料庫設計的這麼複雜就是為了優化查詢效率,盡量讓資料庫少做事!使我們呼叫資料庫的時候更有效率。
從Select語句看Oracle查詢原理
下午看了下記憶體結構,特總結下select原理,不對之處敬請指教。第一步 客戶端把語句發給伺服器端執行。一方面是從記憶體中讀取資料要比從硬碟中的資料檔案中讀取資料效率要高,另一方 面,也是因為這個語句解析的原因。第二步 語句解析 1 查詢快取記憶體。2 語句合法性檢查。3 語言含義檢查。4 獲得物件...
oracle 遞迴查詢 Oracle遞迴查詢
1.1 建立表與插入資料 create table district id number 10 not null,parent id number 10 name varchar2 255 byte not null alter table district add constraint distr...
Oracle中的SQL分頁查詢原理和方法詳解
oracle中的sql分頁查詢原理和方法詳解 本文分析並介紹oracle中的分頁查詢的方法。oracle中的表,除了我們建表時設計的各個字段,其實還有兩個字段 此處只介紹2個 分別是rowid 行標示符 和rownum 行號 即使我們使用describe命令檢視表的結構,也是看不到這兩個列的描述的,...