Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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
Oracle11g Oracle查询速度随着新连接的增加而急剧变化_Oracle11g_Database Performance_Query Performance_Toad - Fatal编程技术网

Oracle11g Oracle查询速度随着新连接的增加而急剧变化

Oracle11g Oracle查询速度随着新连接的增加而急剧变化,oracle11g,database-performance,query-performance,toad,Oracle11g,Database Performance,Query Performance,Toad,我有一个db查询,在2个表上有3个联接,在末尾有2个自联接和ORDERBY子句。数据库服务器位于另一个数据库服务器Oracle11g上。我们有一个在内部运行此查询的工具,它的运行时间是11小时,而不是最多1小时 我从日志中抓取了这个查询,并在Toad11.5中运行它,它首先在早上需要10秒-db在晚上没有被触及。然后我去db服务器运行工具,杀死它或者让它完成,然后我回到Toad并运行这个查询,大约需要2-3个小时才能完成,相同的查询没有任何更改 请帮我排除这种奇怪的行为。另外,当查询需要10秒时

我有一个db查询,在2个表上有3个联接,在末尾有2个自联接和ORDERBY子句。数据库服务器位于另一个数据库服务器Oracle11g上。我们有一个在内部运行此查询的工具,它的运行时间是11小时,而不是最多1小时

我从日志中抓取了这个查询,并在Toad11.5中运行它,它首先在早上需要10秒-db在晚上没有被触及。然后我去db服务器运行工具,杀死它或者让它完成,然后我回到Toad并运行这个查询,大约需要2-3个小时才能完成,相同的查询没有任何更改


请帮我排除这种奇怪的行为。另外,当查询需要10秒时,在删除order by时,如果这些信息有帮助的话,大约需要500毫秒。

蟾蜍愚弄了你。它确实返回了前500行或什么行,但不是整个数据集。尝试转到数据集Ctrl+end的末尾,您将看到读取:年龄需要多少时间

我可以想到两个选择:

使用driving_site hint,这将强制在数据库服务器上执行,而不是在您当前连接的计算机上执行 将过程移动到数据库服务器本身,并从本地连接调用它
没有过程,只有select语句。有没有办法在蟾蜍中禁用这种缓存行为?另外,为什么在运行该工具后,它的行为不相同?蟾蜍的行为应该保持不变。你使用哪种蟾蜍版本?查看您的版本中的选项是否提供OCI数组缓冲区大小;如果是,请查看它可以设置为什么。我知道它在12.5中不存在,但正如谷歌在12.7.Toad 11.5中所说。我读了更多关于OCI缓冲区大小的文章,我有250万条记录被返回。我不能将蟾蜍的缓冲区大小设置为不切实际的值,每次抓取时都会分配大的缓冲区。我只需要计算出db运行给定查询需要多少时间,甚至不需要查看数据。如果有其他方法,请提出建议。您有疑问;假设它看起来像是从包含某些条件的多个\u表中选择多个\u列。为了强制蟾蜍将它们全部取出来,请从中选择count,例如,从中选择count*,从具有某些_条件的多个_表中选择多个_列,即使您的查询源成为计数。