Oracle物理體系(二)

2021-06-26 20:48:19 字數 1126 閱讀 6212

從一條查詢簡單的sql語句來分析。

select  name from table whre id=1  首先使用者執行這條語句要連線資料庫 ,經過pga區(私有記憶體區)。這裡使用者連線資訊和使用者許可權資訊儲存,只要這裡儲存的session資訊不斷開連線,下次系統不用再去硬碟中讀取資料,直接從pga區中獲取。此外該sql還會立即匹配一條唯一的hash值,接下來該sql指令進入2區進行處理。首先敲開sga的共享池大門,準備登門拜訪。 

共享次大門開啟了,該sql會在房內查詢是否有地方儲存過這個sql指令的身份證(就是唯一hash值),如果沒有的話就得先檢查自己的語句語法是否正確、語義是否正確、是否有許可權,在這些都沒問題的情況下生成這條語句的身份證,唯一的hash值就被儲存下來了。然後就是解析,比如 id列在有索引的情況下是用索引讀更高效還是全表掃瞄更高效!

oracle做出這個選擇依據就是兩種方式都估算一邊,看哪個代價更低,用地代價的方式和唯一hash值對應在一起!

接著該sql語句就去資料緩衝區宣讀聖旨,資料緩衝區立即在tabel中查詢id=1的資料,如果沒找到就去資料檔案中查詢,然後帶到資料緩衝區展現。所有在資料緩衝區存在對應查詢的資料,是不會去資料檔案查詢的。

從一條簡單的更新語句來分析。

update table set name = 'luopusheng'  where id=1  執行這條語句首先執行查詢的步驟,接著在資料緩衝區修改完資料後啟動dbwr程序。然後dbwr經常將資料緩衝區的資料刷到資料檔案。日誌緩衝區儲存了資料庫中操作日誌,記錄動作,然後由lgwr程序將日誌緩衝區記憶體寫進磁碟的日誌檔案中記錄。目的很簡單,就是為了便於將來出現異常情況時,可以根據日誌檔案中記錄的動作,再繼續執行一遍,保證資料安全。 

日誌檔案也有4個,1寫滿換到2寫,2滿切換到3,最後4寫滿後 arch就會把1備份出去 形成 歸檔檔案。

而且oracle還有個非常重要的程序ckpt,ckpt就是決定什麼時候觸發dbwr將資料緩衝區寫到資料庫檔案(可以設定某引數來控制ckpt的觸發時間)。

如果更新語句執行之後一直不提交會被寫到資料檔案嗎?(會,成為不是由commit(提交)決定,而是由ckpt決定)。

在ckpt的觸發下,dbwr將資料緩衝區資料寫到資料檔案,但是如果lgwr出現故障,dbwr是不會停ckpt的命令的,應為oracle資料庫會耐心等待日誌完成才執行。

Oracle物理體系之旅

1.oracle由例項和資料庫組成,在圖中用虛框標記,上半部的直角方框為例項instance,下半部的圓角方框為資料庫database。2.共享記憶體區sga system global area 和一系列後台程序組成的。3.其中sga最主要被劃分為 共享池 shared pool 資料緩衝區 db...

Oracle 物理體系結構

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

Oracle物理體系結構

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