亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

oracle 之 內(nèi)存—鞭辟近里(二)

系統(tǒng) 2058 0

?

overview of the pga
pga是在操作系統(tǒng)的進(jìn)程或是線程特定的一塊內(nèi)存區(qū)域,它不是共享的。因?yàn)閜ga是進(jìn)程指定的,因此它不會(huì)在sga中分配。
pga是一個(gè)內(nèi)存堆,其中包含了被專用服務(wù)器或是共享服務(wù)器金曾鎖需要的一些會(huì)話變量信息。服務(wù)器進(jìn)程需要在pga中分配一些所需的內(nèi)存結(jié)構(gòu)。
一個(gè)比喻為,pga是一個(gè)臨時(shí)的文件管理員的工作區(qū)域,這個(gè)文件管理員就是服務(wù)進(jìn)程,她是為客戶服務(wù)工作的(client process),然后文件管理員把工作區(qū)域分為很多的區(qū)域,然后來處理或是保存客戶的不同信息,當(dāng)這個(gè)工作完成的時(shí)候,那么相關(guān)區(qū)域的空間就會(huì)被釋放掉。
如下圖,顯示了在專用服務(wù)器模式下所有的進(jìn)程分配的pga的信息(注意background 進(jìn)程也是需要分配pga的),可以使用一個(gè)初始化參數(shù)設(shè)置一個(gè)大的instance pga 值,然后每個(gè)私有的pga分別占用instance pga的一部分size:
圖片

A)pga 組件內(nèi)容
pga是被劃分為很多不同的區(qū)域的,每個(gè)區(qū)域都有不同的目的功能。下面是一個(gè)專用服務(wù)器模式下pga的內(nèi)存分配情況,并不是所有的組件都是必須存在的。
圖片
看到很多大師把pga分成兩部分,一部分為fixed area(固定區(qū)域)和variable area(可變區(qū)域),
可變區(qū)域又分為會(huì)話內(nèi)存(session memory)和私有sql區(qū)(private sql area),私有sql區(qū)又分為永久區(qū)域(persistent area)和運(yùn)行區(qū)域(runtime area 和sql work areas)。
我想這樣分也是有意義的,先按照官網(wǎng)文檔分發(fā)的就如上圖所示了。
private sql area:
私有sql區(qū)包含一些關(guān)于sql語句解析的信息以及其他進(jìn)程相關(guān)的會(huì)話信息。當(dāng)一個(gè)服務(wù)進(jìn)程處理sql或是pl/sql代碼的時(shí)候,進(jìn)程就會(huì)使用私有sql去來存儲(chǔ)變量信息和語句查詢執(zhí)行狀態(tài)信息以及語句執(zhí)行區(qū)域信息。
private sql area 在uga中,通過使用共享sql區(qū)域來存儲(chǔ)語句執(zhí)行計(jì)劃,這些在sga中分配。
1)shared sql area:
當(dāng)一個(gè)sql語句第一次被執(zhí)行的時(shí)候,那么數(shù)據(jù)庫就會(huì)使用shared sql area 去處理折條語句,這個(gè)區(qū)域是共享的,可以被其他用戶所訪問,其中包含了語句的執(zhí)行分析樹以及執(zhí)行計(jì)劃。在這個(gè)區(qū)域中每個(gè)shared sql area為一個(gè)唯一的語句存在。(詳細(xì)內(nèi)容將在sga和shared pool中進(jìn)行說明)
2)private sql area
當(dāng)一個(gè)會(huì)話執(zhí)行一個(gè)sql語句的時(shí)候,這個(gè)私有sql area 就會(huì)在pga中進(jìn)行分配了。每個(gè)session都會(huì)有一個(gè)private sql area,如果執(zhí)行同一個(gè)sql那么會(huì)指向同一個(gè)shared sql area。
eg:我執(zhí)行了select * from t在一個(gè)session中執(zhí)行20此和在10個(gè)不同的session執(zhí)行同樣這條語句,那么會(huì)共享同樣的sql語句執(zhí)行計(jì)劃。但是private area 可能是不能夠被共享的,因?yàn)槠渲锌赡艽鎯?chǔ)的不同的變量值和數(shù)據(jù)。
其實(shí)我們在進(jìn)行dml以及ddl操作的時(shí)候隱含的都是打開cursor,每個(gè)游標(biāo)都作為客戶端一邊指向服務(wù)端的一條指針,每個(gè)游標(biāo)打開都會(huì)分配相應(yīng)的private sql area。因此在應(yīng)用開發(fā)的過程中應(yīng)該及時(shí)釋放關(guān)閉游標(biāo),釋放內(nèi)存占用,以提高內(nèi)存使用率。
圖片
客戶端進(jìn)程負(fù)載管理私有sql 區(qū)域,釋放和分配private sql area依據(jù)應(yīng)用,但是我們可以使用open_cursor這個(gè)參數(shù)來進(jìn)行控制client process 能夠打開的游標(biāo)數(shù)量。

這個(gè)private sql area 被分為兩個(gè)區(qū)域:runtime area 和persistent area
1)runtime area
當(dāng)執(zhí)行一個(gè)請求的時(shí)候第一步就分配了runtime area,它包含查詢執(zhí)行狀態(tài)信息,如我在一個(gè)全表掃描的時(shí)候,這個(gè)運(yùn)行區(qū)就跟蹤在檢索的數(shù)目進(jìn)度。當(dāng)這個(gè)執(zhí)行的dml sql語句結(jié)束的時(shí)候,該區(qū)域就會(huì)被釋放了。
2)persistent area:
該區(qū)域包含了變量值(bind variable),這個(gè)永久區(qū)域當(dāng)游標(biāo)被關(guān)閉的時(shí)候內(nèi)存得以釋放:
eg:select * from t where name=:value;
那么value就是這個(gè)bind variable
sql work area:
? 該工作區(qū)在pga中被私有分配,使用與密集型操作,如我進(jìn)行sort operator的時(shí)候,那么就會(huì)使用sort area 來存儲(chǔ)sort 的行,當(dāng)我進(jìn)行hash join的時(shí)候,那么我就會(huì)使用hash area來存儲(chǔ)相應(yīng)的檢索內(nèi)容,當(dāng)使用bitmap merge的時(shí)候,那么就會(huì)使用bitmap merge area 來從位圖索引進(jìn)行scan來合并數(shù)據(jù)。
eg:
SQL> select * from student s join class c on s.id=c.id(+) order by s.id desc;
??????? ID NAME??????????????????????? AGE??? CALSSID???????? ID CLASSNAME
---------- -------------------- ---------- ---------- ---------- --------------------
???????? 8 h??????????????????????????? 20????????? 2
???????? 7 g??????????????????????????? 26????????? 3
???????? 6 f??????????????????????????? 25????????? 1
???????? 5 e??????????????????????????? 23????????? 3
???????? 4 d??????????????????????????? 23????????? 1
???????? 3 c??????????????????????????? 22????????? 1????????? 3 3
???????? 2 b??????????????????????????? 21????????? 2????????? 2 2
???????? 1 a??????????????????????????? 20????????? 1????????? 1 1
8 rows selected.
SQL> set autotrace trace explain;
SQL> r
? 1* select * from student s join class c on s.id=c.id(+) order by s.id desc
Execution Plan
----------------------------------------------------------
Plan hash value: 537866712
---------------------------------------------------------------------------------------------
| Id? | Operation???????????????????? | Name??????? | Rows? | Bytes | Cost (%CPU)| Time???? |
---------------------------------------------------------------------------------------------
|?? 0 | SELECT STATEMENT????????????? |???????????? |???? 8 |?? 608 |???? 5? (40)| 00:00:01 |
|?? 1 |? SORT ORDER BY??????????????? |???????????? |???? 8 |?? 608 |???? 5? (40)| 00:00:01 |
|?? 2 |?? MERGE JOIN OUTER??????????? |???????????? |???? 8 |?? 608 |???? 4? (25)| 00:00:01 |
|?? 3 |??? TABLE ACCESS BY INDEX ROWID| STUDENT???? |???? 8 |?? 408 |???? 1?? (0)| 00:00:01 |
|?? 4 |???? INDEX FULL SCAN?????????? | PRIMARY_KEY |???? 8 |?????? |???? 1?? (0)| 00:00:01 |
|*? 5 |??? SORT JOIN????????????????? |???????????? |???? 3 |??? 75 |???? 3? (34)| 00:00:01 |
|?? 6 |???? TABLE ACCESS FULL???????? | CLASS?????? |???? 3 |??? 75 |???? 2?? (0)| 00:00:01 |
---------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
?? 5 - access("S"."ID"="C"."ID"(+))
?????? filter("S"."ID"="C"."ID"(+))
Note
-----
?? - dynamic sampling used for this statement (level=2)
SQL>
在這個(gè)執(zhí)行計(jì)劃中可以看出sort order by是在sort area 中的,private sql 中的運(yùn)行區(qū)域在calss表匯總執(zhí)行了一個(gè)全表掃描的進(jìn)度,這個(gè)會(huì)話執(zhí)行了一個(gè)left join 在兩個(gè)表中獲取了相應(yīng)數(shù)據(jù)。
當(dāng)work area 工作區(qū)域很小的時(shí)候,不能夠容納鎖執(zhí)行語句的數(shù)據(jù)信息,那么就會(huì)把執(zhí)行的數(shù)據(jù)信息劃分為很多的數(shù)據(jù)piece,然后oracle緩慢的進(jìn)行處理piece,其他的piece 會(huì)被暫時(shí)緩存到disk中,因此我們應(yīng)該保證有足夠的內(nèi)存給予work area一邊減小disk 的i/o,以便提高系統(tǒng)系能。
B)pga在共享服務(wù)器和專用服務(wù)器模式下組件的不同分配情況。
Memory Area Dedicated Server Shared Server

Nature of session memory

Private

Shared

Location of the persistent area

PGA

SGA

Location of the run-time area for DML/DDL statements

PGA

PGA


++++++++++++++++++++++++++++++++++++++++++++++++↖(^ω^)↗+++++++++++++

?

oracle 之 內(nèi)存—鞭辟近里(二)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 久久天天躁狠狠躁夜夜2020一 | av亚洲男人天堂 | 精品久久免费视频 | 久热精品视频在线播放 | 欧美19综合中文字幕 | 香蕉人在线香蕉人在线 | 午夜狠狠操 | 在线精品视频成人网 | 98色花堂国产精品首页 | 久久久久久国产精品mv | 正在播放亚洲一区 | 一本大道香蕉久在线不卡视频 | 日本不卡一区二区三区 最新 | 日韩精选视频 | 成人在线免费 | 久久青草免费视频 | 综合在线视频精品专区 | 国产成人精品免费视频网页大全 | 九九视频精品全部免费播放 | 久久中文字幕免费 | 无遮挡一级毛片呦女视频 | 甜心女孩泰剧在线观看 | 特黄特黄aaaa级毛片免费看 | 伊人久久精品亚洲午夜 | 日本精品一区二区三区在线观看 | 成人日韩 | 四虎在线播放 | 2020国产成人免费视频 | 久久午夜综合久久 | 成人一a毛片免费视频 | 97狠狠操| 开心久久婷婷综合中文字幕 | 中文乱码在线观看 | 成人短视频在线观看视频 | 在线观看欧美国产 | 亚洲精品成人网久久久久久 | 青青福利视频 | 精品免费福利视频 | 国产成人爱片免费观看视频 | 夜夜爱夜夜做 | 国内精品久久久久激情影院 |