PGA内存办理战略ITeye - 凯时娱乐

PGA内存办理战略ITeye

2019年03月28日10时23分56秒 | 作者: 冰蝶 | 标签: 内存,办理,时刻 | 浏览: 2297

转自:http://zhidao.baidu.com/link?url=z9PNNWBWVAC6dlAX5_KBRMoUSC0QctbwHEqMIJELKsUpEVDzadLwjrZ3Mn8M5Xcd_c7pDZk7cW9s6CqWFI8jBa

什么时分运用主动PGA内存办理?什么时分运用手动PGA内存办理?

  白日体系正常运转时合适运用主动PGA内存办理,让Oracle依据当时负载主动办理、分配PGA内存。

  夜里用户数少、进行保护的时分能够设定当时会话运用手动PGA内存办理,让当时的保护操作取得尽可能多的内存,加速履行速度。

  如:服务器平常运转在主动PGA内存办理模式下,夜里有个任务要大表进行排序衔接后更新,就能够在该操作session中暂时更改为手动PGA内存办理,然后分配大的SORT_AREA_SIZE和HASH_AREA_SIZE(50%乃至80%内存,要确保无其他用户运用),这样能大大加速体系运转速度,又不影响白日高峰期对体系形成的影响。

操作指令

会话级更改

  ALTER SESSION SET WORKAREA_SIZE_POLICY = {AUTO | MANAUL};

  ALTER SESSION SET SORT_AREA_SIZE = 65536;

  ALTER SESSION SET HASH_AREA_SIZE = 65536;

学以致用

  1,排序区:

  pga_aggregate_target为100MB,单个查询能用到5%也便是5MB时排序所需时刻

  SQL create table sorttable as select * from all_objects;

  表已创立。

  SQL insert into sorttable (select * from sorttable);

  已创立49735行。

  SQL insert into sorttable (select * from sorttable);

  已创立99470行。

  SQL set timing on;

SQL set autotrace traceonly;

  SQL select * from sorttable order by object_id;

  已挑选198940行。

  已用时刻:  00: 00: 50.49

  Session级修正排序区为30mb所需时刻

  SQL ALTER SESSION SET WORKAREA_SIZE_POLICY = MANUAL;

  会话已更改。

  已用时刻:  00: 00: 00.02

  SQL ALTER SESSION SET SORT_AREA_SIZE = 30000000;

  会话已更改。

  已用时刻:  00: 00: 00.01

  SQL select * from sorttable order by object_id;

  已挑选198940行。

  已用时刻:  00: 00: 10.76

  能够看到所需时刻从50.49秒削减到10.31秒,速度进步很明显。

  2,散列区:

  pga_aggregate_target为100MB,单个查询能用到5%也便是5MB时表衔接所需时刻

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

  已挑选49735行。

  已用时刻:  00: 00: 40.50

  Session级修正散列区为30mb所需时刻

  SQL ALTER SESSION SET WORKAREA_SIZE_POLICY = MANUAL;

  会话已更改。

  已用时刻:  00: 00: 00.01

  SQL ALTER SESSION SET HASH_AREA_SIZE = 30000000;

  会话已更改。

  已用时刻:  00: 00: 00.01

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

  已挑选49735行。

  已用时刻:  00: 00: 04.47

  所需时刻由40.50秒进步到4.47秒,作用相同很明显。

  补白:以上试验皆履行全表扫描确保相关表读入缓冲区中,防止因数据没读入缓存形成差错。

-另一个网址的:
总结一下:
1。 运用并行参数,8个CPU, 能够用parallel 6 ,最多占用6个CPU, 正常情况下没问题(条件是其他运用没有占超越2个CPU的资源)
2。 nologging, 肯定应该运用,会使速度大幅上升。(削减很多redo log)
3。 PGA, 一般的auto pga最大才100M, 明显没有到达最好功能,应该运用manual pga
alter session set workarea_size_policy=manual;
alter session set  hash_area_size=100000; hash_area_size 默许情况下会主动依据sort_area_size*2来调,导致sort_area_size不能超越1G, 手动设了就没问题了。
alter session set sort_area_size=2000000000; 在体系可用内存满足的情况下,最大能够到2G
4。 设置高一点的db_file_multiblock_read_count 也有利于进步I/O功能。确保满足大的db_cache_size能够防止free_buffer_wait的呈现
5。 能够经过v$session_longops 来监督进展
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯时娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章