1. 程式人生 > >Oracle物理體系結構

Oracle物理體系結構


使用者請求:1-2-3 or 1-2

(圖一)

oracle組成

例項:SGA、後臺程序

資料庫:資料檔案、引數檔案、日誌檔案、控制檔案、歸檔日誌檔案。其中歸檔日誌檔案最終可能會被轉移到其他新的儲存介質中。用於恢復備份使用。

PGA:私有不共享記憶體,使用者對資料庫發起的無論查詢還是更新的任何操作都是在PGA預處理,然後才進入例項區域,

有SGA和後臺程序共同完成使用者請求。

PGA作用:儲存使用者的連線連線資訊,會話屬性,連線變數等。儲存使用者許可權等重要資訊,當用戶程序與資料庫建立會話時,系統會將使用者許可權查出並儲存在此會話中。當發起的指令需要排序時,記憶體PGA區為排序區。如果記憶體放不下超出的部分就在臨時表空間進行 排序,也就是在磁碟中排序。

Oracle執行sql過程

Selectname from t where id = 29

使用者提交一條語句給伺服器程序,此時在1區(PGA)中完成使用者連線資訊的儲存和許可權的儲存。(會話不斷開下次不需要從硬碟中讀取)。並且伺服器程序利用此sql語句生成一個Hash值。

隨後sql指令進入2區(SGA),在共享池中檢視有無此Hash值,如果沒有:語法檢查、語義檢查等。檢查通過會儲存此Hash值。接著對語句中涉及的表,索引,檢視等物件進行解析。生成執行計劃儲存起來和此前的Hash進行對應。

此時進入資料快取區,快取中沒有則按照之前分析的執行計劃從資料庫檔案中查詢。


兩次執行同一條sql

比較

原因:1、使用者首次執行時需要從磁碟中讀取使用者連線資訊、許可權資訊並儲存在PGA ,第二次執行時 只需從PGA中讀取,避免了物理讀。

2、首次執行後,SGA中儲存了sql指令唯一Hash值,並保留了語法語義檢查及執行計劃等相關解析結果。第二次執行時只要Hash值匹配則忽略解析和生成執行計劃。

3、首次執行時資料從磁碟中獲取,第二次執行時資料在資料快取區中。

Updatet set age = 20 where id =19;

更新語句的執行工程:


前三條和查詢語句基本一樣。

資料在資料快取區被修改後 由DBWR程序寫入資料檔案。


日誌緩衝區儲存了資料庫相關操作的日誌。由LGWR程序寫入日誌檔案。日誌檔案寫滿時將會被覆蓋,覆蓋之前ARCH

會將日誌備份出去,這些歸檔檔案可用作以後恢復資料。


凡事有記錄:資料、日誌。先日誌後資料。


後臺程序介紹

PMON:程序監視器(關注單個程序)

SMON:系統監視器(關注系同級別的)

LCKn:用於叢集

RECO:用於分散式

CKPT:用於觸發DBWR,(觸發頻繁不能達到批量寫入的效果)

DBWR:把資料從資料緩衝區寫資料庫資料檔案

LGWR:把日誌緩衝區中的資料寫到磁碟redo檔案

ARCH:日誌檔案快被重寫時轉移日誌檔案

回滾介紹:以update語句為例


REDO:重新實現你的操作  ex:日誌恢復

UNDO:撤銷/回退你的操作 ex:rollback