執行一條寫入的SQL語句時在RDBMS中都發生了什麼
1. 將SQL語句載入入資料庫緩衝區
2. 將SQL語句要操作的資料檔案副本載入入資料庫緩衝區
3. 執行SQL語句,修改資料檔案副本,形成“髒緩衝區”
4. CKPT檢測到“髒緩衝區”,呼叫DBWn
5. 在DBWn執行之前,先運行了LGWR,將資料檔案的原始狀態和資料庫的改變記錄到Redo Log Files
6. 執行DBWn,將“髒緩衝區的內容寫入到資料檔案”
7. 同時CKPT修改控制檔案和資料檔案頭
8. SMON回收不必要的空閒資源
- User訪問Oracle Server之前提交一個請求(包含了db_name、instance_name、username、password等資訊),Oracle Server接收到請求並通過Password File的驗證後,分配SGA記憶體池,啟動後臺程序同時建立並啟動例項。
- 在啟動例項之後User Process與Server Process建立Connect。
- 再通過Server process和Oracle Instance完成建立Sesscion。
- 使用者執行SQL語句,由server process接收到並直接與Oracle互動。
- SQL語句通過Server Process到達Oracle Instance,再將SQL載入資料庫緩衝區。
- Server Process通知Oracle Database將與SQL語句相關的資料塊副本載入到緩衝區中。
- 在資料庫快取區執行SQL語句,併產生”髒緩衝區”。
- 由CKPT檢查點程序檢查到”髒緩衝區”,並呼叫DBWn資料庫寫程序,
但在DBWn執行之前,應該由LGWR先將資料檔案的原始狀態、資料庫的改變等資訊記錄到Redo Log Files。 - 將更新的內容寫入到磁碟中的資料檔案。
- 返回結果給使用者
|