PGA包括用于存储服务器进程临时变量等内容的工作内存区,存储服务器进程正在执行的SQL信息的内存,以及作为SQL执行一部分的排序记录所占用的内存。用于保存变量的PGA工作内存区最初的大小被称为栈空间,由于它是基于数据库服务器正在使用的操作系统预先确定的,因此不能直接控制。而PGA中的其他部分则都能控制,下面分别加以描述。
当服务器进程为某个用户执行SQL语句时,它可以跟踪相关SQL语句特定会话的信息以及某些过程的执行情况,这些信息存储在PGA中的私有SQL区中,这些过程又被称作游标(cursor)。请不要将它与共享内存池中的共享SQL区混淆。共享SQL区包含SQL语句相关的可共享的详细信息,例如优化规划等。我们在第4章对优化器和优化规划进行了讨论。
私有SQL区包含会话中SQL语句执行的特定信息,例如,到目前为止获取的行数等信息。一旦SQL语句被处理,它的私有SQL区可以被其他SQL语句重用。如果应用程序对那些私有SQL区已经被重用的SQL语句重新发起执行请求,那么它的私有SQL区必须重新初始化。
一旦SQL语句被处理,它的私有SQL区可以被其他SQL语句重用
这句怎样理解,是私有SQL区被清空再填充内容 还是被其他SQL语句重复利用原来的内容
请教各位
当服务器进程为某个用户执行SQL语句时,它可以跟踪相关SQL语句特定会话的信息以及某些过程的执行情况,这些信息存储在PGA中的私有SQL区中,这些过程又被称作游标(cursor)。请不要将它与共享内存池中的共享SQL区混淆。共享SQL区包含SQL语句相关的可共享的详细信息,例如优化规划等。我们在第4章对优化器和优化规划进行了讨论。
私有SQL区包含会话中SQL语句执行的特定信息,例如,到目前为止获取的行数等信息。一旦SQL语句被处理,它的私有SQL区可以被其他SQL语句重用。如果应用程序对那些私有SQL区已经被重用的SQL语句重新发起执行请求,那么它的私有SQL区必须重新初始化。
一旦SQL语句被处理,它的私有SQL区可以被其他SQL语句重用
这句怎样理解,是私有SQL区被清空再填充内容 还是被其他SQL语句重复利用原来的内容
请教各位
因为oracle的进程管理接到一条sql语句时,首先分析它在高速缓存里面是否存在,如果存在就不用分析而直接取调整缓存里取高速缓存里的sql语句,如果不存在那么就要做语句分析然后才能执行;
做sql语句分析是需要开销服务器时间的;
私有sql区域的释放是与你使用的工具相关的,当然也与open_cursor参数的设置有关系,当游标关闭时,private sql area也就会被释放了, 而这种释放也就是清空了.
PGA是占用的内存块,私有SQL区也是内存块,红色标识字的意思就是PGA中私有SQL区的sql被处理完后,这部分sql所占据的内存块就被回收,然后被分配给别的请求SQL。