PGA结构
當(dāng)客戶端向服務(wù)器發(fā)送連接請(qǐng)求,服務(wù)器監(jiān)聽到客戶端的請(qǐng)求,在專用服務(wù)器模式下,會(huì)在服務(wù)器端衍生一個(gè)server process來代理客戶的請(qǐng)求,server process進(jìn)而向?qū)嵗l(fā)起連接,創(chuàng)建會(huì)話,而PGA就為server process所分配和使用。
PGA,這P,或譯之程序,或翻為私有,角度不同而已,通常,我們稱之”程序全局區(qū)“。它的創(chuàng)建時(shí)期:
1)server process啟動(dòng)或創(chuàng)建時(shí)分配,原因?無(wú)他,唯PGA和server process是”一根繩上的兩個(gè)螞蚱“。相濡以沫,患難一共。
? 2)系統(tǒng)運(yùn)行時(shí),sort、hash join等操作也可能需要進(jìn)一步的PGA分配
PGA為server process排他訪問,故不存在latch爭(zhēng)用。它包含了server process的數(shù)據(jù)和控制信息。通過C語(yǔ)言的運(yùn)行時(shí)調(diào)用malloc()在本地分配,可動(dòng)態(tài)擴(kuò)縮。PGA是私有的而不是共享的,這個(gè)機(jī)制是有必要的,因?yàn)楫?dāng)進(jìn)程死掉后可以把這些資源清除和釋放掉.
oracle的應(yīng)用程序或者用戶的應(yīng)用程序在執(zhí)行時(shí),都可能顯示或者隱式地打開cursor,打開cursor就需要分配sql area,私有sql區(qū)在cursor打開時(shí)分配,關(guān)閉時(shí)釋放,實(shí)際上,數(shù)據(jù)庫(kù)的主要活動(dòng)就是cursor的活動(dòng),簡(jiǎn)單說來,用戶進(jìn)程的任務(wù)執(zhí)行和cursor的使用是PGA的主要消耗者。
用戶體驗(yàn)最敏感的貢獻(xiàn)就在于PGA。用戶所發(fā)出的請(qǐng)求,執(zhí)行時(shí),是在pga中執(zhí)行。若在pga中命中,則無(wú)須軟解析或者硬解析,此時(shí)稱為軟軟解析。pga中的游標(biāo)指向buffer cache中的數(shù)據(jù)行。返回時(shí),是一批批,而非一條條。
PGA可分固定PGA和可變PGA。可變PGA是一個(gè)內(nèi)存堆,PGA的可變區(qū)實(shí)際上是我們最為關(guān)注的PGA部分。通過x$ksmpp可以查詢可變PGA的分配和使用情況。它主要由:
? a)會(huì)話內(nèi)存:用于存放會(huì)話的登錄信息以及其他相關(guān)信息
? b)私有sql區(qū)
??? b1)永久區(qū)域:含綁定變量,這部分內(nèi)存只有在cursor關(guān)閉時(shí)才會(huì)被釋放
??? b2)sql work area:含sort區(qū)、hash區(qū)等,對(duì)于DML事務(wù),sql執(zhí)行完畢就釋放該區(qū)域;對(duì)于select則是記錄返回后或者查詢?nèi)∠麜r(shí)釋放
c)游標(biāo)和sql區(qū)域:這里的游標(biāo)是一塊內(nèi)存,不是我們常指的“指針”
私有sql區(qū)的sql工作區(qū)太小會(huì)造成磁盤I/O,為均衡執(zhí)行sql所需的內(nèi)存與實(shí)際空間的分配,不得不將作業(yè)轉(zhuǎn)換到臨時(shí)表空間,因此,oracle將所得的sql工作區(qū)按大小分:
? a)optimal size:sql工作區(qū)完全可以滿足執(zhí)行sql所需的內(nèi)存
? b)one-pass size:與臨時(shí)表空間進(jìn)行一次I/O
? c)multi-pass size:與臨時(shí)表空間進(jìn)行多次I/O
?? 當(dāng)workload不大時(shí),oracle傾向于為每個(gè)用戶會(huì)話分配optimal size sql工作區(qū).
UGA就是你的會(huì)話狀態(tài)。你的會(huì)話總能訪問這部分內(nèi)存。UGA的位置取決你如何連接oracle。如果是專用服務(wù)器連接,UGA在PGA中創(chuàng)建;如果是共享服務(wù)器連接,UGA則在SGA中創(chuàng)建。所以,PGA包含進(jìn)程內(nèi)存,還可能包含UGA。
轉(zhuǎn)載于:https://www.cnblogs.com/wcwen1990/p/6656564.html
總結(jié)
- 上一篇: Flask 生成下载文件
- 下一篇: source insight增加tab标