4.Oracle深度学习笔记——内存架构之PGA Private SQL 区
欢迎转载,转载请标明出处: http://blog.csdn.net/notbaron/article/details/50558150
PrivateSQL 区域持有已解析的SQL语句相关的信息和其他处理会话相关的信息。
当一个服务进程执行SQL或PL/SQL代码,进程使用私有SQL区域来存储绑定变量,查询执行状态信息,查询执行工作区域。
在一个或多个会话中的多个私有SQL区域中,可以指向同一个SGA中的执行计划。如下图1:
其中Cursor执行私有区域的名字或句柄。可以将CURSOR理解成客户端上的指针,指向服务器端。
因为CURSOR和私有SQL区域相关,两个术语经常互用。
如上篇笔记中所诉:
私有SQL区域分为以下两个区域:
运行区域和持久区域。
运行区域:包含查询执行状态信息。例如,跟踪全表扫描返回的行数。在执行请求的时候,第一步是创建运行区域。对于DML语句,当SQL语句关闭后运行区域就释放。
持久区域:包含绑定变量值。在语句执行的时候提供。该区域在CURSOR关闭的时候才释放。
客户端进程要负责管理私有区域大小。分配和返回私有区域很大程度取决于应用,当然一个客户端进程能分配的私有区域大小是被初始化参数限制的OPEN_CURSORS。
静态大多数用户依赖于数据库包提供的自动游标处理,但是ORACLE程序接口对开发者提供了更多的控制游标的接口。
通常,应用程序需要在关闭不再使用的CURSOR,来释放持久区域,来减少应用程序的内存需求。