成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析Oracle中PGA和UGA兩者間的區別

數據庫 Oracle
初學Oracle時,你可能會對Oracle中PGA和UGA兩者間的區別產生疑問,這里就PGA和UGA兩者間的區別發表下個人意見,在這里拿出來和大家分享一下。

初學Oracle時,你可能會對Oracle中PGA和UGA兩者間的區別產生疑問,這里就PGA和UGA兩者間的區別發表下個人意見,在這里拿出來和大家分享一下。

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

實際上PGA和UGA兩者間的區別跟一個進程和一個會話之間的區別是類似的。盡管說進程和會話之間一般都是一對一的關系,但實際上比這個更復雜。一個很明顯的情況是MTS配置,會話往往會比進程多得多。在這種配置下,每一個進程會有一個PGA,每一個會話會有一個UGA。PGA所包含的信息跟會話是無任何關聯的,而UGA包含的信息是以特定的會話為基礎的。

The PGA:進程全局區(PGA)即可以理解為Process Global Area,也可以理解為Program Global Area。它的內存段是在進程私有區(Process Private Memory)而不是在共享區(Shared Memory)。它是個全局區意味著它包含了所有代碼有可能進入的全局變量和數據結構,但是它是不被所有進程共享的。每個Oracle的服務器進程都包含有屬于自己的PGA,它只包含了本進程的相關特定信息。PGA中的結構不需要由latches來保護,因為其它的進程是不能進入到這里面來訪問的。

PGA包含的是有關進程正在使用的操作系統資源信息以及進程的狀態信息,而其它的進程所使用的Oracle的共享資源是在SGA中。PGA是私有的而不是共享的,這個機制是有必要的,因為當進程死掉后可以把這些資源清除和釋放掉。

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

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

所打開游標的持續和運行時間內的區域;

包的狀態信息,特定的變量;

Java會話狀態;

可以用的ROLES;

被ENABLE的跟蹤事件;
 
起作用的NLS參數設置;
 
打開的DBLINK;

會話的入口控制。

跟PGA一樣,UGA也由兩區組成:Fixed UGA和Variable UGA,也稱為UGA HEAP。 Fixed UGA包含了大約70個原子變量,小的數據結構和指向Variable UGA的指針。

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

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

#p#

The CGA:

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

一個單獨的CGA在遞歸調用時是需要的。在SQL語句的分析過程中,對數據字典信息的遞歸調用是需要的,因為要對SQL語句進行語法分析,還有在語句的優化期間要計算執行計劃。執行PL/SQL塊時在處理SQL語句的執行時也是需要遞歸調用的,在DML語句的執行時要處理觸發器執行也是需要遞歸調用的。

不管UGA是放在PGA中還是在SGA中,CGA都是PGA的一個子堆(Subheap)。這個事實的一個重要推論是在一個調用的期間會話必須是一個進程。對于在一個MTS的Oracle數據庫進程應用開發時關于這一點的理解是很重要的。如果相應的調用較多,就得增加processes的數量以適應調用的增加。

沒有CGA中的數據結構,CALLS是沒法工作的。而實際上跟一次CALL相關的數據結構一般都是放在UGA中,如SQL AREA,PL/SQL AREA和SORT AREA它們都必須在UGA中,因為它們要在各CALLS之間要一直存在并且可用。而CGA中所包含的數據結構是要在一次CALL結束后能夠釋放的。例如CGA包含了關于遞歸調用的信息,直接I/O BUFFER等還有其它的一些臨時性的數據結構。

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

【編輯推薦】

  1. 修改Oracle存 儲過程所需代碼
  2. 對Oracle存儲過程的總結
  3. 實現Oracle存 儲過程的實際應用的代碼 
  4. 深入高性能的 Oracle動態SQL開發 
  5. Oracle SQL的 優化規則解析 
責任編輯:佚名
相關推薦

2010-09-16 09:05:50

CSS display

2019-09-26 06:27:59

FTPSFTPTCP

2019-10-21 08:44:54

操作系統GPUCPU

2022-05-14 16:08:25

邊緣計算AI人工智能

2019-02-22 05:23:36

VLANVXLAN網絡技術

2018-05-28 09:09:00

機器學習深度學習

2022-12-01 11:23:51

5G通信技術

2009-03-03 12:54:58

2020-11-13 11:49:56

物聯網

2022-10-20 23:21:21

2020-04-10 21:02:51

人工智能

2025-04-14 03:33:00

2023-02-22 14:14:30

RPA聊天機器人

2020-05-18 09:22:51

JavaScriptDart 開發

2009-06-18 13:59:48

SCAOSGi

2022-03-03 10:31:36

Web3元宇宙區塊鏈

2010-03-23 17:44:10

Java Socket

2024-09-24 10:30:20

2011-07-19 15:37:13

Oracle 10g內存管理PGA

2021-12-10 23:46:13

手機數據重啟
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91九色麻豆 | 97视频久久 | 一区二区不卡高清 | 亚洲视频区 | 日本久久久影视 | 美女逼网站 | 激情六月丁香婷婷 | 国产在线精品一区二区三区 | 国产精品精品久久久久久 | 日韩一区二区免费视频 | 五月天国产视频 | 免费的日批视频 | 日韩精品视频在线 | 午夜精品久久久久久久星辰影院 | 亚洲综合热 | 美女在线一区二区 | 国产免费一区二区 | 成人免费视频在线观看 | 亚洲美女av网站 | 久久久久久久一区 | 久久成人精品视频 | 高清一区二区三区 | 中文字幕国产高清 | 欧美专区在线视频 | 九九综合 | 久久国产麻豆 | 春色av | 黄色在线观看 | 日韩av免费在线观看 | 天堂一区 | 情侣黄网站免费看 | 国产精品18hdxxxⅹ在线 | 亚洲精品乱码久久久久久9色 | 狠狠爱网址 | 日韩免费一区 | 男人天堂网址 | 亚洲区一区二 | 国产一区二区视频免费在线观看 | 911精品国产| 毛片一区| 欧美日韩大片 |