我知道SGA(包含一个Oracle数据库实例的数据和控制信息)代表System Global Area,而PGA(包含Oracle进程专用的数据和控制信息)代表Program Global Area,但是,我不太了解变量对数据库的作用。如果将SGA配置为PGA的10倍,那么在检索数据时会有什么帮助?
答案 0 :(得分:1)
SGA是服务器上的内存结构,其中包含用于保存代码,SQL,类,游标等的池以及用于保存数据的缓存。因此,当客户端向服务器发送查询时,代码和数据就位于SGA中,以由服务器上的RDBMS进行处理。
PGA是用于用户服务器进程的共享内存区域,用于临时存储区和工作区。 Oracle使用PGA和temp表空间来工作,以获取返回给客户端的结果集,然后释放该会话的PGA。
两者之间没有比例。根据要向服务器发送多少代码和数据来确定SGA的大小,并根据活动的进程数来确定PGA是动态的。如果有成千上万个进程,则PGA可以轻松地成为SGA的两倍。 SGA的尺寸非常谨慎;出于性能方面的考虑,使其变大并不一定会使其变好。
还有一个UGA(用户全局区域),它是每个客户端(非服务器)进程的存储区域。