请教老师关于PGA和临时表空间的问题

问题1:

在讲PGA内存那块的时候,老师说到排序的话,SERVER PROCESS会用到自己PGA里的SORT AREA,当SORT AREA不够的时候,就会使用TEMP表空间,将数据从BUFFER里写入TEMP表空间,再从TEMP表空间一块块地读入SORT AREA进行排序,然后再返回给用户。

我的疑问:为什么使用TEMP表空间进行排序的时候,还要将数据从TEMP读入SORT AREA,不是直接在TEMP表空间里排好序然后就直接返给用户了吗?要不直接从BUFFER里一块块读入SORT AREA排序不就可以了吗?

排序的话,是不是所以数据都在一起才能进行,比如都在SORT AREA或者TEMP表空间?


问题2:

还是在讲PGA那块的时候,说到当数据库的使用的PGA已经达到PGA_AGGREGATE_TARGET的时候,ORACLE已经没有PGA分给新的SERVER PROCESS,这时ORACLE就会再分配一些内存给PGA

我的疑问:
ORACLE再度分配给PGA的内存是从哪里分来,是从SGA拿一部分吗?

希望老师不吝赐教,谢谢!

标签: 暂无标签
海角

写了 4 篇文章,拥有财富 62,被 1 人关注

转播转播 分享分享 分享淘帖
回复

使用道具

P6 | 发表于 2012-6-5 19:41:19
1、计算机所有的操作的数据都需要调入到内存中才能完成,但是排序的时候,排序空间不够的情况下,部分数据会临时性的寄存在磁盘上的temp空间中,需要的时候再次调入。
2、PGA空间不够的时候,Oracle会从计算机的物理内存中分培训空间,不会从SGA中分配空间。
回复

使用道具

P4 | 发表于 2012-6-9 00:29:55
oraunix 发表于 2012-6-5 19:41
1、计算机所有的操作的数据都需要调入到内存中才能完成,但是排序的时候,排序空间不够的情况下,部分数据 ...

非常感谢
回复

使用道具

P3 | 发表于 2012-7-6 14:29:28
"
PGA空间不够的时候,Oracle会从计算机的物理内存中分培训空间,不会从SGA中分配空
"
请教大师,这个有疑问哦
假如是自动内存分配
是不可能大于MEMORY_TARGET,请问这不都是提前分配给了oracle的吗?
怎么又重新从操作系统分配呢?
回复

使用道具

P3 | 发表于 2012-12-2 16:50:33
数据库的使用的PGA已经达到PGA_AGGREGATE_TARGET的时候,ORACLE已经没有PGA分给新的SERVER PROCESS,这时ORACLE就会再分配一些内存给PGA

对这句话也表示怀疑,求证
回复

使用道具

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈