中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      Oracle認(rèn)證:Oracle內(nèi)存結(jié)構(gòu)研究-PGA篇

      時(shí)間:2024-09-22 06:12:43 Oracle認(rèn)證 我要投稿
      • 相關(guān)推薦

      Oracle認(rèn)證:Oracle內(nèi)存結(jié)構(gòu)研究-PGA篇

        一、概述

      Oracle認(rèn)證:Oracle內(nèi)存結(jié)構(gòu)研究-PGA篇

        SGA,PGA,UGA都是Oracle管理的內(nèi)存區(qū)。

        SGA(System Global Area),即系統(tǒng)全局區(qū),Oracle中最重要的內(nèi)存區(qū)。

        PGA(Process Global Area),即程序全局區(qū),一個進(jìn)程的專用的內(nèi)存區(qū)。

        UGA(User Global Area),即用戶全局區(qū),與特定的會話相關(guān)聯(lián)。

        專用服務(wù)器連接模式,UGA在PGA中分配。

        共享服務(wù)器連接模式,UGA在SGA中的Large Pool中分配。

        如果采用專用服務(wù)器連接模式,PGA中包含UGA,其他區(qū)域用來排序,散列和位圖合并。

        簡單來講,PGA=UGA+排序區(qū)+散列區(qū)+位圖合并區(qū)。

        二、PGA的管理模式

        PGA分兩種管理模式:

        1) 手動PGA內(nèi)存管理,用戶指定排序區(qū)和散列區(qū)所使用的內(nèi)存,每個連接使用相同的內(nèi)存。

        2) 自動PGA內(nèi)存管理,告訴Oracle可以使用的PGA的總量,由Oraclce根據(jù)系統(tǒng)負(fù)載決定具體分配。

        9iR1時(shí)默認(rèn)為手動PGA內(nèi)存管理,9iR2以后默認(rèn)為自動PGA內(nèi)存管理。

        PGA內(nèi)存可以動態(tài)擴(kuò)大和回收。

        PGA內(nèi)存管理模式由WORKAREA_SIZE_POLICY控制。

        1) 設(shè)為MANUAL,啟用手動內(nèi)存管理。

        2) 設(shè)為AUTO,并且PGA_AGGREGATE_TARGET不為0時(shí),啟用自動內(nèi)存管理。

        三、手動PGA內(nèi)存管理

        有三個參數(shù)對PGA影響最大。

        SORT_AREA_SIZE:對信息排序所用的內(nèi)存總量

        SORT_AREA_RETAINED_SIZE:排序后在內(nèi)存中保存排序信息的內(nèi)存總量。

        HASH_AREA_SIZE:存儲散列列表所用的內(nèi)存量。

        下面對這三個參數(shù)進(jìn)行說明:

        1) SORT_AREA_SIZE:

        如果SORT_AREA_SIZE設(shè)為512KB,SORT_AREA_RETAINED_SIZE也為512KB,則Oracle使用512KB的內(nèi)存進(jìn)行排序,排序后所有數(shù)據(jù)都留在內(nèi)存中。

        2) SORT_AREA_RETAINED_SIZE:

        如果SORT_AREA_SIZE設(shè)為512KB,SORT_AREA_RETAINED_SIZE設(shè)為384KB,則Oracle使用512KB的內(nèi)存進(jìn)行排序,然后保留384KB的已排序數(shù)據(jù),另外512KB-384KB=128KB的已排序數(shù)據(jù)會寫到臨時(shí)表空間中。

        如果SORT_AREA_RETAINED_SIZE沒有設(shè)置,則它的值為0,但是實(shí)際保留的排序數(shù)據(jù)和SORT_AREA_SIZE相同。

        3) HASH_AREA_SIZE:

        一個大集合和另個集合進(jìn)行連接時(shí),會用到HASH_AREA_SIZE參數(shù)。較小的 表會放到這部分內(nèi)存中作為驅(qū)動表,然后大表進(jìn)行探索(PROBE)操作進(jìn)行連接。如果HASH_AREA_SIZE過小會影響兩個集合(表)連接時(shí)的性能。

        注意點(diǎn):

        1) 如果需要排序的數(shù)據(jù)量大于SORT_AREA_SIZE,Oracle會分批進(jìn)行排序。把當(dāng)前已排序的數(shù)據(jù)保存到臨時(shí)表空間中,然后對剩余的數(shù)據(jù)進(jìn)行排序。最后,還會對這些保存在臨時(shí)表空間中的已排序數(shù)據(jù)再進(jìn)行排序,因?yàn)槊看伪4娴脚R時(shí)表空間中的已排序數(shù)據(jù)只是部分?jǐn)?shù)據(jù)的排序,對整體需排序的數(shù)據(jù)來說只是部分局部有序。

        2) *_AREA_SIZE只是對某個操作的限制,一個查詢可能有多個操作,每個操作都有自己的內(nèi)存區(qū)。如果SORT_AREA_SIZE設(shè)為5MB,一個查詢可能會有10個排序操作,這樣一個查詢會占用50MB的排序內(nèi)存。

        3) 3,*_AREA_SIZE內(nèi)存的分配是按需分配。如果一個查詢需要5MB內(nèi)存進(jìn)行排序,就算分配1G的SORT_AREA_SIZE也不會全部使用,只會使用需要的5MB的內(nèi)存量。

        四、自動PGA內(nèi)存管理

        要啟用自動PGA內(nèi)存管理,設(shè)置下列參數(shù):

        1,WORKAREA_SIZE_POLICY=AUTO

        2,PGA_AGGREGATE_TARGET=非零

        有關(guān)PGA_AGGREGATE_TARGET:

        1) PGA_AGGREGATE_TARGET是一個目標(biāo)值。連接數(shù)少的時(shí)候?qū)嶋H分配PGA內(nèi)存會比它要小。連接數(shù)多的時(shí)候?qū)嶋H分配的PGA內(nèi)存會比它要大,但是Oracle會努力保持總PGA保持在PGA_AGGREGATE_TARGET值內(nèi)。

        例如,PGA_AGGREGATE_TARGET 設(shè)為300MB。5個用戶連接時(shí),每個用戶可能分配10MB的PGA內(nèi)存,共分配50MB的PGA內(nèi)存。300個用戶連接時(shí)每個用戶可能分配1.3MB的 PGA內(nèi)存,共分配390MB的PGA內(nèi)存。當(dāng)用戶連接多時(shí),Oracle會降低每個用戶的PGA內(nèi)存使用量。

        2) 一個串行查詢(非并行查詢)可能包括多個排序/散列操作,每個排序/散列操作最多使用5%的PGA內(nèi)存。

        3) 一個并行查詢最多可用到30%的PGA內(nèi)存,無論有多少并行進(jìn)程。

        五、手動PGA內(nèi)存管理與自動PGA內(nèi)存管理

        自動PGA內(nèi)存管理相對于手動PGA內(nèi)存管理有很多優(yōu)點(diǎn)

        1, 當(dāng)用戶連接少時(shí)

        a) 手動PGA內(nèi)存管理不管有多少可用內(nèi)存都按照預(yù)設(shè)值進(jìn)行分配。比如當(dāng)前空閑內(nèi)存為300MB,連接需要10MB的內(nèi)存進(jìn)行排序,而我們設(shè)定的排序區(qū)大小為5MB,導(dǎo)致雖然有足夠的空閑內(nèi)存卻無法分配給當(dāng)前連接,造成執(zhí)行效率低下。

        b) 自動PGA內(nèi)存管理會根據(jù)當(dāng)前空閑內(nèi)存來進(jìn)行分配。當(dāng)空閑內(nèi)存為300MB,當(dāng)前用戶需要10MB內(nèi)存進(jìn)行排序,Oracle就會分配10MB內(nèi)存給當(dāng)前用戶。

        2, 當(dāng)用戶連接多時(shí)

        a) 手動PGA內(nèi)存管理會完全按照預(yù)設(shè)值分配內(nèi)存。如果物理內(nèi)存總量為1G,排序區(qū)設(shè)為5MB,當(dāng)有300個用戶連接時(shí),Oracle會分配1.5G的內(nèi)存,這已經(jīng)超過了我們的實(shí)際物理內(nèi)存!

        b) 自動PGA內(nèi)存管理會根據(jù)當(dāng)前連接情況進(jìn)行分配。如果物理內(nèi)存總量為1G,PGA_AGGREGATE_TARGET為300MB,當(dāng)用戶數(shù)從10升到 300時(shí),每個用戶連接的內(nèi)存會從滿足需要的10MB慢慢減少到1.3MB,雖然最后總量也會超過PGA_AGGREGATE_TARGET,但比起手動 PGA內(nèi)存管理要好很多了。

        什么時(shí)候使用自動PGA內(nèi)存管理?什么時(shí)候使用手動PGA內(nèi)存管理?

        白天系統(tǒng)正常運(yùn)行時(shí)適合使用自動PGA內(nèi)存管理,讓Oracle根據(jù)當(dāng)前負(fù)載自動管理、分配PGA內(nèi)存。

        夜里用戶數(shù)少、進(jìn)行維護(hù)的時(shí)候可以設(shè)定當(dāng)前會話使用手動PGA內(nèi)存管理,讓當(dāng)前的維護(hù)操作獲得盡可能多的內(nèi)存,加快執(zhí)行速度。

        如:服務(wù)器平時(shí)運(yùn)行在自動PGA內(nèi)存管理模式下,夜里有個任務(wù)要大表進(jìn)行排序連接后更新,就可以在該操作session中臨時(shí)更改為手動PGA內(nèi)存管理,然后分配大的SORT_AREA_SIZE和HASH_AREA_SIZE(50%甚至80%內(nèi)存,要確保無其他用戶使用),這樣能大大加快系統(tǒng)運(yùn)行速度,又不影響白天高峰期對系統(tǒng)造成的影響。

        六、操作命令

        系統(tǒng)級更改:

        ALTER SYSTEM SET WORKAREA_SIZE_POLICY = {AUTO | MANAUL};

        ALTER SYSTEM SET PGA_AGGREGATE_TARGET=100000000;

        ALTER SYSTEM SET SORT_AREA_SIZE = 65536 SCOPE = SPFILE;

        ALTER SYSTEM SET HASH_AREA_SIZE = 65536 SCOPE = SPFILE;

        會話級更改

        ALTER SESSION SET WORKAREA_SIZE_POLICY = {AUTO | MANAUL};

        ALTER SESSION SET SORT_AREA_SIZE = 65536;

        ALTER SESSION SET HASH_AREA_SIZE = 65536;

        七、學(xué)以致用

        1,排序區(qū):

        pga_aggregate_target為100MB,單個查詢能用到5%也就是5MB時(shí)排序所需時(shí)間

        SQL> create table sorttable as select * from all_objects;

        表已創(chuàng)建。

        SQL> insert into sorttable (select * from sorttable);

        已創(chuàng)建49735行。

        SQL> insert into sorttable (select * from sorttable);

        已創(chuàng)建99470行。

        SQL> set timing on;

        SQL> set autotrace traceonly;

        SQL> select * from sorttable order by object_id;

        已選擇198940行。

        已用時(shí)間: 00: 00: 50.49

        Session級修改排序區(qū)為30mb所需時(shí)間

        SQL> ALTER SESSION SET WORKAREA_SIZE_POLICY = MANUAL;

        會話已更改。

        已用時(shí)間: 00: 00: 00.02

        SQL> ALTER SESSION SET SORT_AREA_SIZE = 30000000;

        會話已更改。

        已用時(shí)間: 00: 00: 00.01

        SQL> select * from sorttable order by object_id;

        已選擇198940行。

        已用時(shí)間: 00: 00: 10.76

        可以看到所需時(shí)間從50.49秒減少到10.31秒,速度提升很明顯。

        2,散列區(qū):

        pga_aggregate_target為100MB,單個查詢能用到5%也就是5MB時(shí)表連接所需時(shí)間

        SQL> select /*+ use_hash(tb1 tb2)*/ * from sorttable tb1,sorttable tb2 where tb1.object_id=tb2.object_id;

        已選擇49735行。

        已用時(shí)間: 00: 00: 40.50

        Session級修改散列區(qū)為30mb所需時(shí)間

        SQL> ALTER SESSION SET WORKAREA_SIZE_POLICY = MANUAL;

        會話已更改。

        已用時(shí)間: 00: 00: 00.01

        SQL> ALTER SESSION SET HASH_AREA_SIZE = 30000000;

        會話已更改。

        已用時(shí)間: 00: 00: 00.01

        SQL> select /*+ use_hash(tb1 tb2)*/ * from sorttable tb1,sorttable tb2 where tb1.object_id=tb2.object_id;

        已選擇49735行。

        已用時(shí)間: 00: 00: 04.47

        所需時(shí)間由40.50秒提升到4.47秒,效果同樣很明顯。

        備注:以上實(shí)驗(yàn)皆執(zhí)行全表掃描保證相關(guān)表讀入緩沖區(qū)中,避免因數(shù)據(jù)沒讀入緩存造成誤差。

        結(jié)論:在9iR2版以后,PGA不再像以前那樣困擾DBA了,Oracle會幫我們做好PGA的分配。但這并不意味著DBA不需要深入了解PGA了,掌握PGA并根據(jù)適當(dāng)應(yīng)用會讓工作如虎添翼。

      【Oracle認(rèn)證:Oracle內(nèi)存結(jié)構(gòu)研究-PGA篇】相關(guān)文章:

      Oracle認(rèn)證:ORACLE綁定變量BINDPEEKING03-08

      Oracle認(rèn)證作用03-19

      Oracle認(rèn)證簡介11-30

      Oracle最新認(rèn)證03-09

      Oracle認(rèn)證途徑03-20

      Oracle認(rèn)證:Oracle控制件文件修復(fù)03-18

      Oracle認(rèn)證:Oracle避免全表掃描方式03-08

      Oracle認(rèn)證職業(yè)前景03-19

      Oracle認(rèn)證考試技巧03-19

      主站蜘蛛池模板: 国产一区二区三区在线免费播放| 中文字幕在线观看乱码一区| 性感人妻中文字幕在线| 山阴县| 亚洲黄色一级高潮大片| 亚洲av乱码国产精品色| 红杏性无码免费专区| 农村国产毛片一区二区三区女| 日韩偷拍一区二区三区视频| 久久久久久岛国免费网站| 中日韩欧美高清在线播放| 搡老女人老妇女老熟妇69| 网友自拍人妻一区二区三区三州| 信丰县| 衡阳县| 鹤庆县| 鄂州市| 名山县| 丹凤县| 钦州市| 德州市| 济阳县| 宁城县| 中文字幕日韩精品人妻在线| 亚洲精品国产精品av| 插入中文字幕在线一区二区三区| 休宁县| 国产粉嫩美女一区二区三 | 亚洲日产国无码| 国产盗摄老熟女视频一区二区三区 | 亚洲精品区二区三区蜜桃| 久久精品国产成人av| 亚洲日韩成人无码不卡网站| 亚洲av熟女天堂系列| 亚洲人成伊人成综合网中文| 视频一区中文字幕亚洲| 国产杨幂AV在线播放| 亚洲狼人社区av在线观看| 狠狠躁夜夜躁人人爽天天不卡| 高跟丝袜一区二区三区| 91精品欧美综合在线观看|