Oracle物理體系結構

2022-03-06 21:13:19 字數 1157 閱讀 8239

各部分解釋:

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 物理體系結構

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

Oracle體系結構之 物理結構

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

Oracle體系結構之 物理結構

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