Oracle 物理體系結構

2021-09-07 04:30:54 字數 1302 閱讀 5933

各部分解釋:

pga: 私有記憶體區,僅供當前發起使用者使用。

三個作用

使用者登入後的

session資訊會儲存在pga。

執行排序。假設記憶體不夠,oracle會在暫時表空間中完畢

儲存使用者

許可權資訊

sga: 包括共享池,資料緩衝區,日誌緩衝區以及一些相關的程序。

database: 資料終於存放的地方,當中一塊區域是日誌存放區。資料和記錄日誌又由dbwr和lgwr來寫入資料庫和重做日誌組,待乙個重做日誌組滿了之後切換到下乙個,等到迴圈了一次之後,原來排序為第一組的日誌會被arch程序寫入歸檔日誌。

如果有一條sql: select * from user where user_id='20'

sql被解析後。

(1區)pga

儲存其登陸和許可權資訊。這一點必須注意,假設儲存了該資訊,下次呼叫sql的時候就不須要又一次校驗。直接玩pga裡取即可了。

隨後該sql會匹配一條

唯一的hash值並到達

2區的共享池。共享池推斷此hash值是否之前已經存在,假設存在就直接執行就ok了;假設不存在,就要檢查sql的

語法、語義等進行驗證並解析。

解析什麼呢?就是要把select * from user where user_id='20' 這條語句,在user_id存在索引的情況下,oracle對最優cost做出選擇(究竟是索引掃瞄還是全表掃瞄),作出選擇後oracle會把改執行計畫和之前的那條hash值放在一起。

帶著條件,sql下一步會到資料緩衝區中查詢是否存在user_id為20的記錄。假設緩衝區有則立即返回結果。假設無,則要到

3區(database)中查詢。不管是否找到都要返回結果。

如果有一條sql:update user set user_name='蕭紅'

如上步驟1.2 。

把資料的操作記錄寫到

重做日誌

寫入資料庫中。持久化資料。把資料庫user表的user_name 欄位都改為蕭紅。

當使用者提交commit的時候,資料並不會立即刷進資料庫。

資料何時會被刷入資料庫?

這與ckpt程序有關。當緩衝區的資料量達到一定的程度時,ckpt程序會被觸發,資料此時才批量刷入資料庫。

當刷入資料庫前斷電了怎麼辦?redu機制又一次執行日誌恢復資料。

2. rollback 執行的是undo

具體請參見《收穫,不止oracle》,本文僅僅作為總結用,如有錯誤請更正。

Oracle物理體系結構

各部分解釋 pga 私有記憶體區,僅供當前發起使用者使用。三個作用 使用者登入後的session資訊會儲存在pga。執行排序,如果記憶體不夠,oracle會在臨時表空間中完成 儲存使用者許可權資訊 sga 包含共享池,資料緩衝區,日誌緩衝區以及一些相關的程序。database 資料最終存放的地方,其...

Oracle體系結構之 物理結構

一 物理檔案的分類 oracle資料庫的物理檔案可以分成三類 資料檔案 日誌檔案 控制檔案 二 資料檔案 資料檔案顧名思義是用來儲存資料的。例如 表,索引等等。從資料檔案中讀取出來的資料會首先存放在記憶體中的sga,作為緩衝資料。應用對資料的修改也是先保持在sga中。由dbwr在某一時刻將其寫入到資...

Oracle體系結構之 物理結構

一 物理檔案的分類 oracle資料庫的物理檔案可以分成三類 資料檔案 日誌檔案 控制檔案 二 資料檔案 資料檔案顧名思義是用來儲存資料的。例如 表,索引等等。從資料檔案中讀取出來的資料會首先存放在記憶體中的sga,作為緩衝資料。應用對資料的修改也是先保持在sga中。由dbwr在某一時刻將其寫入到資...