自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺析Oracle中PGA和UGA兩者間的區(qū)別

數(shù)據(jù)庫 Oracle
初學(xué)Oracle時(shí),你可能會對Oracle中PGA和UGA兩者間的區(qū)別產(chǎn)生疑問,這里就PGA和UGA兩者間的區(qū)別發(fā)表下個(gè)人意見,在這里拿出來和大家分享一下。

初學(xué)Oracle時(shí),你可能會對Oracle中PGA和UGA兩者間的區(qū)別產(chǎn)生疑問,這里就PGA和UGA兩者間的區(qū)別發(fā)表下個(gè)人意見,在這里拿出來和大家分享一下。

The Process Memory除SGA(System Global Area)之外,Oracle進(jìn)程還使用下面三個(gè)全局區(qū):
The Process Global Area (PGA);
The User Global Area (UGA);
The Call Global Area (CGA)。

實(shí)際上PGA和UGA兩者間的區(qū)別跟一個(gè)進(jìn)程和一個(gè)會話之間的區(qū)別是類似的。盡管說進(jìn)程和會話之間一般都是一對一的關(guān)系,但實(shí)際上比這個(gè)更復(fù)雜。一個(gè)很明顯的情況是MTS配置,會話往往會比進(jìn)程多得多。在這種配置下,每一個(gè)進(jìn)程會有一個(gè)PGA,每一個(gè)會話會有一個(gè)UGA。PGA所包含的信息跟會話是無任何關(guān)聯(lián)的,而UGA包含的信息是以特定的會話為基礎(chǔ)的。

The PGA:進(jìn)程全局區(qū)(PGA)即可以理解為Process Global Area,也可以理解為Program Global Area。它的內(nèi)存段是在進(jìn)程私有區(qū)(Process Private Memory)而不是在共享區(qū)(Shared Memory)。它是個(gè)全局區(qū)意味著它包含了所有代碼有可能進(jìn)入的全局變量和數(shù)據(jù)結(jié)構(gòu),但是它是不被所有進(jìn)程共享的。每個(gè)Oracle的服務(wù)器進(jìn)程都包含有屬于自己的PGA,它只包含了本進(jìn)程的相關(guān)特定信息。PGA中的結(jié)構(gòu)不需要由latches來保護(hù),因?yàn)槠渌倪M(jìn)程是不能進(jìn)入到這里面來訪問的。

PGA包含的是有關(guān)進(jìn)程正在使用的操作系統(tǒng)資源信息以及進(jìn)程的狀態(tài)信息,而其它的進(jìn)程所使用的Oracle的共享資源是在SGA中。PGA是私有的而不是共享的,這個(gè)機(jī)制是有必要的,因?yàn)楫?dāng)進(jìn)程死掉后可以把這些資源清除和釋放掉。

PGA包含兩個(gè)主要區(qū)域:Fixed PGA和Variable PGA或稱為PGA Heap。 Fixed PGA的作用跟Fixed SGA是類似的,都包含原子變量(不可分的),小的數(shù)據(jù)結(jié)構(gòu)和指向Variable PGA的指針。

Variable PGA是一個(gè)堆。它的Chunks可以從Fixed Table X$KSMPP查看得到,這個(gè)表的結(jié)構(gòu)跟前面有提到的X$KSMSP是相同的。PGA HEAP包含了一些有關(guān)Fixed Table的永久性內(nèi)存,它跟某些參數(shù)的設(shè)置有依賴關(guān)系。這些參數(shù)包含DB_FILES,LOG_FILES,CONTROL_FILES。
The UGA:UGA(User Global Area)包含的是特定會話的信息,有如下一些:

所打開游標(biāo)的持續(xù)和運(yùn)行時(shí)間內(nèi)的區(qū)域;

包的狀態(tài)信息,特定的變量;

Java會話狀態(tài);

可以用的ROLES;

被ENABLE的跟蹤事件;
 
起作用的NLS參數(shù)設(shè)置;
 
打開的DBLINK;

會話的入口控制。

跟PGA一樣,UGA也由兩區(qū)組成:Fixed UGA和Variable UGA,也稱為UGA HEAP。 Fixed UGA包含了大約70個(gè)原子變量,小的數(shù)據(jù)結(jié)構(gòu)和指向Variable UGA的指針。

UGA HEAP中的Chunks可以從它們自己的會話中通過查看表X$KSMUP獲得相關(guān)信息,這個(gè)表的結(jié)構(gòu)跟X$KSMSP是一樣的。UGA HEAP包含了一些有關(guān)fixed tables的永久性內(nèi)存段,跟一些參數(shù)的設(shè)置有依賴關(guān)系。這些參數(shù)有OPEN_CURSORS,OPEN_LINKS,和MAX_ENABLE_ROLES。

UGA在內(nèi)存中的位置依賴于會話的配置方式。如果會話連接的配置方式是專用服務(wù)器模式(DDS)即是一個(gè)會話對應(yīng)一個(gè)進(jìn)程,則UGA是放在PGA中的。在PGA中,Fixed UGA是其中的一個(gè)Chunk,而UGA HEAP是PGA的一個(gè)子堆(Subheap)。如果會話連接是配置為共享服務(wù)器模式(MTS), Fixed UGA是SHARED POOL中的一個(gè)Chunk,而UGA HEAP則是SHARED POOL中的子堆(Subheap)

#p#

The CGA:

跟其它的全局區(qū)不同,Call Global Area是短暫性存在的。它只有在調(diào)用數(shù)據(jù)期間存在,一般是在對實(shí)例的最低級別的調(diào)用時(shí)才需要CGA,如下:
分析一個(gè)SQL語句;
執(zhí)行一個(gè)SQL語句;
取出一個(gè)SELECT語句的輸出。

一個(gè)單獨(dú)的CGA在遞歸調(diào)用時(shí)是需要的。在SQL語句的分析過程中,對數(shù)據(jù)字典信息的遞歸調(diào)用是需要的,因?yàn)橐獙QL語句進(jìn)行語法分析,還有在語句的優(yōu)化期間要計(jì)算執(zhí)行計(jì)劃。執(zhí)行PL/SQL塊時(shí)在處理SQL語句的執(zhí)行時(shí)也是需要遞歸調(diào)用的,在DML語句的執(zhí)行時(shí)要處理觸發(fā)器執(zhí)行也是需要遞歸調(diào)用的。

不管UGA是放在PGA中還是在SGA中,CGA都是PGA的一個(gè)子堆(Subheap)。這個(gè)事實(shí)的一個(gè)重要推論是在一個(gè)調(diào)用的期間會話必須是一個(gè)進(jìn)程。對于在一個(gè)MTS的Oracle數(shù)據(jù)庫進(jìn)程應(yīng)用開發(fā)時(shí)關(guān)于這一點(diǎn)的理解是很重要的。如果相應(yīng)的調(diào)用較多,就得增加processes的數(shù)量以適應(yīng)調(diào)用的增加。

沒有CGA中的數(shù)據(jù)結(jié)構(gòu),CALLS是沒法工作的。而實(shí)際上跟一次CALL相關(guān)的數(shù)據(jù)結(jié)構(gòu)一般都是放在UGA中,如SQL AREA,PL/SQL AREA和SORT AREA它們都必須在UGA中,因?yàn)樗鼈円诟鰿ALLS之間要一直存在并且可用。而CGA中所包含的數(shù)據(jù)結(jié)構(gòu)是要在一次CALL結(jié)束后能夠釋放的。例如CGA包含了關(guān)于遞歸調(diào)用的信息,直接I/O BUFFER等還有其它的一些臨時(shí)性的數(shù)據(jù)結(jié)構(gòu)。

Java Call Memory也是在CGA中。這一段內(nèi)存比Oracle的其它內(nèi)存段管理得更密集。它分成三個(gè)Space: Stack Space, New Space, Old Space。在New Space和Old Space中不再被參考使用的Chunks,根據(jù)它們在使用期間的長度及SIZE的不同,在調(diào)用的執(zhí)行過程中將被當(dāng)成不用的Chunks收集起來。New Space Chunks很多次的不用的Chunks的反復(fù)收集過程中沒有被收集的Chunks將會被放到Old Space Chunks中。這是在Oracle內(nèi)存管理中唯一的一個(gè)廢物收集(garbage collection),其它的Oracle內(nèi)存段都是釋放Dead Chunks。

【編輯推薦】

  1. 修改Oracle存 儲過程所需代碼
  2. 對Oracle存儲過程的總結(jié)
  3. 實(shí)現(xiàn)Oracle存 儲過程的實(shí)際應(yīng)用的代碼 
  4. 深入高性能的 Oracle動(dòng)態(tài)SQL開發(fā) 
  5. Oracle SQL的 優(yōu)化規(guī)則解析 
責(zé)任編輯:佚名
相關(guān)推薦

2010-09-16 09:05:50

CSS display

2019-09-26 06:27:59

FTPSFTPTCP

2019-10-21 08:44:54

操作系統(tǒng)GPUCPU

2022-05-14 16:08:25

邊緣計(jì)算AI人工智能

2019-02-22 05:23:36

VLANVXLAN網(wǎng)絡(luò)技術(shù)

2018-05-28 09:09:00

機(jī)器學(xué)習(xí)深度學(xué)習(xí)

2022-10-20 23:21:21

2020-11-13 11:49:56

物聯(lián)網(wǎng)

2022-12-01 11:23:51

5G通信技術(shù)

2009-03-03 12:54:58

2025-04-14 03:33:00

2020-04-10 21:02:51

人工智能

2023-02-22 14:14:30

RPA聊天機(jī)器人

2022-03-03 10:31:36

Web3元宇宙區(qū)塊鏈

2020-05-18 09:22:51

JavaScriptDart 開發(fā)

2011-07-19 15:37:13

Oracle 10g內(nèi)存管理PGA

2024-09-24 10:30:20

2009-06-18 13:59:48

SCAOSGi

2010-03-23 17:44:10

Java Socket

2021-12-10 23:46:13

手機(jī)數(shù)據(jù)重啟
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號