1. 程式人生 > >大世界Oracle體系(未完成)

大世界Oracle體系(未完成)

Oracle 體系結構 PGA SGA

寫本篇文章主要受兩本書的啟發寫一些個人心得筆記,分享知識,並把書籍推薦給大家閱讀1、《收獲,不止Oracle》 2、《Oracle內核技術》 不涉及編程,設計體系架構思路,如果有編程書更是好!還有官方文檔一定要讀,英語水平差看翻譯也要讀一遍,真正權威來源於官方。我感覺了解Oracle Internal時候,盡可能把自己成為設計者的角度去看待問題,如果你能用C寫成底層過程更是了得。

我們一起來說一說,那麽數據庫分為Instance與Database,我們知道用戶訪問必須通過實例才能訪問數據庫,這是硬規定。實例與數據庫中都是什麽,用戶訪問還要經過PGA,這又是什麽,下面我們一起來來看一看

PGA,當我們的通過Socket請求(其實也分為很多種處理,不想細說)我們的指令會先到PGA區域是Program Global Area,這個區域有會保存會話屬性,存綁定變量等也就是我們用戶連接信息,然後用戶進程與數據庫建立會話時候,系統會將用戶相關權限查出來,保存在這個區域,PGA裏面有進程叫Server process來完成這些工作,而且是私有不是共享!

SGA,System Global Area,共享內存區域,Instance 其實就是 SGA+process(後臺),SGA裏面板塊有很多,我認為相對來說shared_pool,database buffer cache,Redo log buffer相對重要,因為每一個組件都很重要,這裏只相對概念,SGA裏面也包含Java pool,Large_pool等,我們那個簡單的查詢語句來說select * from t來說說他怎樣過程。

Shared_pool共享池,這個其實作用很大,當我們從PGA訪問到實例時候先到SGA中,那麽在PGA會生成唯一標識HASH,這時候會在SGA的共享池中尋找著唯一標識,如果找到HASH會從對應數據緩存緩沖中找到對應的values,把values直接返回用戶,如果找不到就比較麻煩,他會顯示判斷語法是否錯誤,權限是否正確,解析用什麽樣的方式去查詢,會先預估成本COST,比較成本選擇較低的方式去查詢,那麽當著動作完成後就會生成唯一HASH值存儲到共享池中,然後去數據緩存緩沖區中查詢。

數據緩沖緩存裏面會尋找我們想要的數據,SGA是在內存中開辟的空間,這時候沒有我們只能去Database中來實現完成,查詢磁盤中的數據文件找到就好找不到也好,都必須帶著結果返回給用戶,那麽一條查詢語句粗略的算是完成。

再說一說實例裏面的進程,我們在Linux下,ps aux | grep oracle就會發現很多後臺進程,我說幾個裏面主要的進程和功能,PMON,SMON,LCKn,RECO,CKPT,ARCH,包括DBWR,LGWR,我們理解這些詞語英語英語!很重要,基本就是英語翻譯過來的字面意思,下面我們都去說一說,知道怎樣工作,負責什麽工作,重點說一下Redo log與ARCH日誌功能!

草稿2個多月了 Oracle體系告一段落 以後有空會繼續更新研究

大世界Oracle體系(未完成)