oracle之記憶體 鞭闢近裡(一)

2022-04-09 08:58:13 字數 1362 閱讀 3275

oracle之記憶體—鞭闢近裡(一)

一)記憶體體系結構:

每當資料庫的例項啟動的時候oracle  database就會分配記憶體以及後台程序,在記憶體區域中儲存的如下相關資訊:

》程式**

》關於以及連線的會話資訊,即使該會話不是活動狀態。

》程式執行期間需要的相關資訊

》關於資料共享一些鎖的資訊。

》緩衝的資料,想資料塊和重做日誌記錄等等。

可以查一下上面這個圖:

a)基本的記憶體結構包括如下部分:

1)sga(系統全域性區,system global area)

sga有很多共享記憶體結構組成,叫做sga的元件,它包括一些關於例項的資料資訊和控制資訊,sga被所有的服務程序和後台程序所共享。例如資料儲存在sga中包括快取的資料塊和共享sql區域。

2)pga(程式全域性區,program global area)

pga是被乙個oracle程序獨自占有的不是共享的一塊區域,它包含一些資料資訊和控制資訊。在oracle程序啟動的時候該區域就被建立了。

pga是為每個服務程序和後台程序存在的,所有的服務程序和是後台程序 鎖分配的所有pga成為例項pga大小。oracle只能對整個所有pga的大小進行限制,不能對單個程序的pga進行設定大小。

3)uga(使用者全域性區,user global area)

uga儲存了一些使用者的會話資訊。

4) 軟體**區(software code areas)

該區域是儲存一些執行的**或是能夠被執行的**的區域。

b)oracle database 記憶體管理

記憶體管理就是可以根據資料庫的不斷變化能夠維護oracle記憶體的相關結構大小,並且給予記憶體的相關components乙個合理的值。oracle記憶體的管理是通過設定相關引數檔案中的引數進行設定的。

其中包括如下管理方式:

1)自動記憶體管理(automatic memory management)

dba可以指定乙個總的目標記憶體值,然後資料庫例項就會自動的對記憶體的相關元件按照不同的需求進行自動動態調整記憶體大小,也就是安裝不同記憶體的需求動態的調整pga和sga的相關大小。(該內容在後續進行深入研究)

2)自動共享記憶體管理((automatic shared memory management)

該管理模式是對記憶體的乙個部分自動管理。你可以給sga設定乙個總的大小目標值然後再設定乙個總的pga大小記憶體值進行管理。

3)手動記憶體管理(manual memory management)

手動記憶體管理就不是設定乙個目標最大值了,而是通過引數檔案中的相關引數進行每個記憶體元件的手動管理。(該方式繁瑣,被棄用了)

note:在11g中,如果在建立資料庫的時候使用dbca然後選擇基本按照方式的時候,預設是採用了自動記憶體管理。

一 JVM之記憶體分割槽

jvm將執行j a程式的記憶體劃分為不同的資料區域 1.1 程式計數器 程式計數器是記憶體區域中一塊比較小的記憶體空間。它的作用就像是乙個指向正在執行的位元組碼行號的指標。改變計數器的值來指向當前要執行的位元組碼指令。並且由於j a多執行緒也是分配時間片的模式來實現的,在單核處理器過程中,執行緒的切...

leakcanary Android 之記憶體檢測

1,為什麼使用leakcanary。因為他簡單,方便,及時,易檢視。2,使用教程。leakcanary是自動檢測activity的,不用再任何activity裡新增 如果需要檢測fragment,那必須自己寫方法,使用它是refwatcher 具體用法如下 新增依賴 dependencies初始化物...

記憶體管理之記憶體定址

記憶體定址 三種記憶體位址 邏輯位址 logical address 包含機器語言指令中用來指定乙個運算元或一條指令的位址 線性位址 linear address 線性位址也稱為虛擬位址 virtual address 實體地址 physical address 用於記憶體晶元級記憶體單元定址,他們...