程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> 【ORACLE】物理體系結構

【ORACLE】物理體系結構

編輯:Oracle教程

一、ORACLE 物理體系結構

各部分解釋:

PGA: 私有內存區,僅供當前發起用戶使用。

    用戶登錄後的信息會保存在PGA。
  1. ,如果內存不夠,oracle會在臨時表空間中完成
  2. 保存用戶信息

SGA: 包含以及一些相關的進程。

DATABASE: 數據最終存放的地方,其中一塊區域是日志存放區。數據和記錄日志又由DBWR和LGWR來寫入,待一個重做日志組滿了之後切換到下一個,等到循環了一次之後,原來排序為第一組的日志會被ARCH進程寫入歸檔日志。

    假設有一條sql: select * from user where user_id='20'

    Sql被解析後,。這一點必須注意,如果保存了該信息,下次調用sql的時候就不需要重新校驗,直接玩PGA裡取就行了。
  1. 隨後該sql會匹配一條並到達,共享池判斷此HASH值是否之前已經存在,如果存在就直接執行就OK了;如果不存在,就要檢查sql的等進行驗證並解析。解析什麼呢?就是要把select * from user where user_id='20' 這條語句,在user_id存在索引的情況下,oracle對最優COST做出選擇(),作出選擇後oracle會把改執行計劃和之前的那條HASH值放在一起。
  2. 帶著條件,sql下一步會到數據緩沖區中查找是否存在user_id為20的記錄。如果緩沖區有則馬上返回結果;如果無,則要到中查找,無論是否找到都要返回結果。

    假設有一條sql:update user set user_name='蕭紅'

    如上步驟1.2 。
  1. 把數據的操作記錄寫到
  2. ,持久化數據,把數據庫user表的user_name 字段都改為蕭紅。

    當用戶提交commit的時候,數據並不會馬上刷進數據庫。數據何時會被刷入數據庫?

    這與CKPT進程有關,當緩沖區的數據量達到一定的程度時,CKPT進程會被觸發,數據此時才批量刷入數據庫。當刷入數據庫前斷電了怎麼辦?REDU機制重新執行日志恢復數據。

      2. ROLLBACK 執行的是UNDO

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved