Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance Oracle未使用的游标会产生开销吗?_Performance_Oracle11g_Cursor - Fatal编程技术网

Performance Oracle未使用的游标会产生开销吗?

Performance Oracle未使用的游标会产生开销吗?,performance,oracle11g,cursor,Performance,Oracle11g,Cursor,我正在处理一个有很多游标的应用程序,其中许多游标只是在包头中定义的,没有在包体中使用,那么这个未使用的游标是否会产生开销?声明的游标但未使用的游标不会产生开销,但打开但未使用的游标可能会产生一些开销 打开的游标存储在PGA的私有SQL区域中。此“保存有关已解析SQL语句的信息和其他用于处理的会话特定信息。”。您可以通过查询找到您拥有的PGA量 Oracle的“是否已打开但未使用的游标是否在PGA中存储任何内容”并不是100%清楚。PGA私有SQL区域的持久化区域部分暗示,只有将任何变量绑定到游标

我正在处理一个有很多游标的应用程序,其中许多游标只是在包头中定义的,没有在包体中使用,那么这个未使用的游标是否会产生开销?

声明的游标但未使用的游标不会产生开销,但打开但未使用的游标可能会产生一些开销

打开的游标存储在PGA的私有SQL区域中。此“保存有关已解析SQL语句的信息和其他用于处理的会话特定信息。”。您可以通过查询找到您拥有的PGA量

Oracle的“是否已打开但未使用的游标是否在PGA中存储任何内容”并不是100%清楚。PGA私有SQL区域的持久化区域部分暗示,只有将任何变量绑定到游标时,才会创建持久化区域;但是,由于必须存储游标的状态,以便DB知道它是打开的,所以我假设使用了一些内存

如果一个打开的游标对您的性能产生负面影响,我会感到震惊。这表明您严重低估了所需的PGA和SGA(执行计划存储在此处)的大小

但是,这种策略可能会适得其反,因为打开的游标数量受到open_cursors参数的限制,您可以在中找到该参数。这是可以打开的游标数量的绝对上限。如果你达到这个极限,你会得到ORA-01000

这意味着您不应打开不打算使用的游标。

然而,这也值得注意,尽管它是从2004年开始的

3-如果增加了open_游标,那么会对db>服务器的性能和内存使用产生什么影响?
...

跟进2004年4月1日至UTC上午10时:

…3)如果您没有点击ora-1000,它将不会改变任何内容(因为您没有使用当前拥有的游标)