各部分解釋:
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在某一時刻將其寫入到資...