PGA内存作用和构成
生活随笔
收集整理的這篇文章主要介紹了
PGA内存作用和构成
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這篇文章是參考甲骨論老相老師的教學視頻
http://v.youku.com/v_show/id_XMzk2NjAxODQ4.html?f=17419200
所做的學習筆記.
1. 什么是PGA, PGA的作用
???????? PGA的全程是Program global area,? 是Oracle數據庫系統的進程(包括前臺進程server process 和 后臺進程各種daemon)的專用的內存空間,? 每1個進程都配1個PGA, 不過實在我們說的PGA通常指的是server process的PGA.
??????? 每1個server process的PGA都只能被這個server process訪問.?
2. PGA的構成
??????? 1) Private SQL area
????????? 2) Session Memory?????????? #hold a session's variables (logon information) and other information related to the session
????????? 3) SQL work Areas?? #SQL 工作區
????????? 我們知道server process 是為連接數據庫和用戶客戶端的session服務的, 而session的作用是什么呢? 當然是執行用戶客戶端提交的sql語句啊. 所以PGA結構中最重要的就是第3點 SQL 工作區, 就是為了執行sql語句服務的內存空間. 而我們主要研究的就是這個sql 工作區.
??????????
??????????
3. SQL work Areas的構成
??????????? 那么sql工作區又由那些部分構成呢?
??????????? 實際上sql 工作區也可以分成幾個部分,? 其中主要的2部分就是:
???????????? 1) sort_area??????????? #排序工作區
???????????? 2) hash_area?????????? #哈希工作區
?????????
????????????
?? ? ? ? ? ? 3.1 ???? sort area??
????????????????????????? 顧名思義,? Sort area就是用于排序的空間.
????????????????????????? 假如,clent想從具有10000條數據的表T1中執行兩條select語句:
????????????????????????? 1. select * from T1
????????????????????????? 2. select * from T1 order by c1,c2
???????????????????????????
????????????????????????? 由于這10000條數據很可能存放在多個buffer中的, 所以實際上server process不能一次過獲得所有10000條數據行的,只會一條一條地獲得數據行.
????????????????????????? 對于第一條語句來講, server process中每獲得一條數據行就會把這條數據行發給用戶, 當中只不過會經過PGA一下, PGA在這個過程中意義不大.
????????????????????????? 而對于第一條語句來講, PGA必須先將10000條數據排好序才能發給用戶, 所以會將10000條數據緩存在PGA里的Sort Aare 里面進行排序. 最后返回給用戶.
????????????????????????? 所以sort area是PGA其中1個重要的部分.
????????????????????????? 而對于sort area 有兩個重要的參數.
????????????????????????? 它們是 sort_area_size ,? sort_area_retained_size
?????????????????????????
????????????????????????? 3.1.1? sort_area_size
??????????????????????????????????? 顧名思義, sort_area_size 就是當前的sort area的大小了. 假如上述要排序的10000條數據總共占5MB空間,那么sort_area_size 就會擴容到5MB.
????????????????????????? 3.1.2? sort_area_retained_size
?????????????????????????????????? 這個是sort_area的保留空間大小, 當上面的5MB 的10000條數據排好序后, server process就會把數據傳給用戶, 那么sort area就會釋放空間, 那么釋放到什么大小呢? 就是由這參數設定的啦.
???????????? 3.2 ??? Hash area?
???????????????????????? 首先,? Oralce數據庫是1個關系數據庫.
???????????????????????? 而什么是關系數據庫呢?? 就是表于表之間有關系啊.
???????????????????????? 絕大部分情況下, 我們不單只從1張表從取數據. 而是多表連接來去數據,? 而多表連接中有一種連接是Hash連接, PGA的Hash are就是為表與表的hash連接服務的.
?????????????????????????
???????????????????????? 生產中, 大部分sql語句都會涉及排序和哈希連接, 所以這兩個pga的部分十分重要...
http://v.youku.com/v_show/id_XMzk2NjAxODQ4.html?f=17419200
所做的學習筆記.
1. 什么是PGA, PGA的作用
???????? PGA的全程是Program global area,? 是Oracle數據庫系統的進程(包括前臺進程server process 和 后臺進程各種daemon)的專用的內存空間,? 每1個進程都配1個PGA, 不過實在我們說的PGA通常指的是server process的PGA.
??????? 每1個server process的PGA都只能被這個server process訪問.?
2. PGA的構成
??????? 1) Private SQL area
????????? 2) Session Memory?????????? #hold a session's variables (logon information) and other information related to the session
????????? 3) SQL work Areas?? #SQL 工作區
????????? 我們知道server process 是為連接數據庫和用戶客戶端的session服務的, 而session的作用是什么呢? 當然是執行用戶客戶端提交的sql語句啊. 所以PGA結構中最重要的就是第3點 SQL 工作區, 就是為了執行sql語句服務的內存空間. 而我們主要研究的就是這個sql 工作區.
??????????
??????????
3. SQL work Areas的構成
??????????? 那么sql工作區又由那些部分構成呢?
??????????? 實際上sql 工作區也可以分成幾個部分,? 其中主要的2部分就是:
???????????? 1) sort_area??????????? #排序工作區
???????????? 2) hash_area?????????? #哈希工作區
?????????
????????????
?? ? ? ? ? ? 3.1 ???? sort area??
????????????????????????? 顧名思義,? Sort area就是用于排序的空間.
????????????????????????? 假如,clent想從具有10000條數據的表T1中執行兩條select語句:
????????????????????????? 1. select * from T1
????????????????????????? 2. select * from T1 order by c1,c2
???????????????????????????
????????????????????????? 由于這10000條數據很可能存放在多個buffer中的, 所以實際上server process不能一次過獲得所有10000條數據行的,只會一條一條地獲得數據行.
????????????????????????? 對于第一條語句來講, server process中每獲得一條數據行就會把這條數據行發給用戶, 當中只不過會經過PGA一下, PGA在這個過程中意義不大.
????????????????????????? 而對于第一條語句來講, PGA必須先將10000條數據排好序才能發給用戶, 所以會將10000條數據緩存在PGA里的Sort Aare 里面進行排序. 最后返回給用戶.
????????????????????????? 所以sort area是PGA其中1個重要的部分.
????????????????????????? 而對于sort area 有兩個重要的參數.
????????????????????????? 它們是 sort_area_size ,? sort_area_retained_size
?????????????????????????
????????????????????????? 3.1.1? sort_area_size
??????????????????????????????????? 顧名思義, sort_area_size 就是當前的sort area的大小了. 假如上述要排序的10000條數據總共占5MB空間,那么sort_area_size 就會擴容到5MB.
????????????????????????? 3.1.2? sort_area_retained_size
?????????????????????????????????? 這個是sort_area的保留空間大小, 當上面的5MB 的10000條數據排好序后, server process就會把數據傳給用戶, 那么sort area就會釋放空間, 那么釋放到什么大小呢? 就是由這參數設定的啦.
???????????? 3.2 ??? Hash area?
???????????????????????? 首先,? Oralce數據庫是1個關系數據庫.
???????????????????????? 而什么是關系數據庫呢?? 就是表于表之間有關系啊.
???????????????????????? 絕大部分情況下, 我們不單只從1張表從取數據. 而是多表連接來去數據,? 而多表連接中有一種連接是Hash連接, PGA的Hash are就是為表與表的hash連接服務的.
?????????????????????????
???????????????????????? 生產中, 大部分sql語句都會涉及排序和哈希連接, 所以這兩個pga的部分十分重要...
轉載于:https://www.cnblogs.com/nvd11/archive/2013/04/02/2996778.html
總結
以上是生活随笔為你收集整理的PGA内存作用和构成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JSON数据格式必知
- 下一篇: js 光标移动到输入框最后位置函数