現代計算機中,cpu 對記憶體的訪問速度要比從磁碟的速度快千倍,因此 oracle 對於資料的訪問 也盡量都在記憶體中完成,而不是直接修改硬碟上的資料。記憶體內容在合適的時候再同步到磁碟。 oracle 利用記憶體來克服磁碟 io的束縛,在記憶體中進行活動越多,系統效能越好,反之,在磁碟上進 行的操作越多,系統效能越差。
oracle 是乙個記憶體消耗大戶,它消耗的記憶體可以分成兩部分——程序共享部分和程序專有部分。 這裡的程序專指oracle 程序(server process 和background process),程序共享部分就叫做sga(shared global area ),程序專有部分就叫做pga(program global area)。
對於不同型別的應用系統,這兩個部分的意義也不同。對於oltp系統,其特徵大量的小事務, sga 要比pga更為重要。對於olap 系統來說,其特徵是大資料量的關聯,因此pga 要比sga 對系統的影響更大。因為pga 直接決定了大的排序、雜湊操作效率。
sga 是一大塊記憶體的總稱,其內部分成若干組成部分,下圖是乙個典型的 sga 示意圖,每 個部分都有獨特的作用。
由server process 從磁碟讀入的資料就放在這塊記憶體中。而修改資料時,也是在這個區域中對數 據進行修改。data buffer cache 中會同時保留資料庫被修改前(before image,前映象)和被修改後 (after image ,後映象)的拷貝。
data buffer cache 中的記憶體可以被分成 3 類:
Oracle記憶體結構
在oracle的記憶體結構中有如下的結構圖 在上圖中可以看到,從整體上可以分為 pga與sga兩個區域,其中 pga private global area,系統全域性區 由所有伺服器和後台程序共享,sga中出處的資料例項包括快取記憶體的資料庫和共享sql區域 sga pross glabal ar...
Oracle記憶體結構
檢視sga的記憶體分配情況 show sga 或者 select from v sga 檢視sga max size的值 show parameter sga max size 檢視當前sga總的記憶體大小 select sum value 1024 1024 total sga mb from v...
Linux 內 存 管 理 精
現在的伺服器大部分都是執行在linux上面的,所以,作為乙個程式設計師有必要簡單地了解一下系統是如何執行的。對於記憶體部分需要知道 1.位址對映 2.記憶體管理的方式 3.缺頁異常 先來看一些基本的知識,在程序看來,記憶體分為核心態和使用者態兩部分,經典比例如下 從使用者態到核心態一般通過系統呼叫 ...