概述
前言:今天花了半天时间理解Concept的PGA这章,现在对PGA做一个总结。
1、什么是PGA
PGA的全称是Program Global Area,是用户发出会话请求时会话信息、SQL信息存放以及的地方,这个地方是私有的区域,一般一个会话对应一个服务进程,只有服务进程才能访问属于它自己的PGA。
2、PGA存放什么
PGA存放绑定信息和数据结构,通俗点来说是存放会话连接信息,游标,和每次执行SQL语句的信息
3、什么是游标
a) cursor是SQL私有区的句柄
b) 当游标完全关闭时私有区才会释放
c) 和游标相关的有两个区域persistent area(持续区)和run-time area(运行区)
d) 持续区只有在游标完全关闭时释放,运行区在DML和DQL操作完毕或取消时释放
4、私有SQL区
每次用户执行一条SQL时都会建立一个SQL私有区,不同的用户执行同一条SQL语句会建立共享SQL区(在share pool),多个私有SQL区可以和一个共享SQL区联系。
5、会话内存
会话内存存放用户建立会话请求时的会话信息
6、SQL工作区
用户请求数据排序、分组、哈希连接、位图操作时会在PGA使用SQL工作区,工作区的空间oracle会请求运行区(run-time area)的空间分配给工作区。在分组、排序还有哈希连接时如果空间不足,oracle会把数据分成小块,把挤出工作区空间部分的数据先存储在临时磁盘中等待工作区的空间。但是位图操作不会这样做。
7、PGA的内存以及SQL区数量
在专有服务器模式中,PGA是自动内存管理的,DBA只要设置一个最大PGA内存大小即可(PGA_AGGREGATE_TARGET)。上面说了每个私有的SQL区都有一个cursor,所以设置open_cursor可以限制SQL区的数量。
最后
以上就是妩媚荷花为你收集整理的PGA总结的全部内容,希望文章能够帮你解决PGA总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复