首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >就临时表空间而言,查询的开销有多大?

就临时表空间而言,查询的开销有多大?
EN

Stack Overflow用户
提问于 2012-05-08 19:33:01
回答 4查看 3.9K关注 0票数 2

我有一些链式程序可以执行一些更复杂的查询,并自由地使用集合。

我的DBA抱怨他们偶尔会消耗内存中临时表空间的S#$%ton。

我可以对查询执行优化,但我也希望尽可能地保持非侵入性,要做到这一点,我需要看到更改对临时表空间的影响。

问题:

如何查看查询在临时表空间上的开销?

需要考虑的一件事是,我没有DBA访问权限。

提前谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-08 20:59:58

如果没有DBA访问权限,我会尝试使用奥托雷。它不会为您提供临时表空间的消耗,但是您可以获得许多有用的信息来调优查询(逻辑读取、磁盘排序数、递归SQL、重做消耗、网络往返)。请注意,您需要获得一些特权才能使用AUTOTRACE,但不是完全的DBA权限。

票数 2
EN

Stack Overflow用户

发布于 2012-05-08 21:52:47

取决于您的查询对临时项目的成本是什么意思。

如果您可以从v$tempseg_usage中进行选择,您可以看到在DEV数据库中所消耗的空间--在DEV数据库上,您的DBA没有理由不能给您访问该视图的权限。

正如gpeche所提到的,自动跟踪会让你很好地了解你从临时项目中做了多少个IOs,这样,再加上空间的使用,你就能很好地了解正在发生的事情。

大型集合通常不是一个好主意--它们在PGA中消耗了大量内存(这与所有其他会话共享的内存非常不同)--这将是DBA所关心的问题。多大的大小取决于你的系统-低数以千计的小记录可能不是太坏,但100的数千或数百万的记录在一个集合中,我会感到担心。

票数 4
EN

Stack Overflow用户

发布于 2012-05-09 05:31:28

在进行各种有趣的查询和技巧之前,在过滤之后,估计应该排序的数据量。如果这个值大于排序区域的大小,排序将从内存移动到临时内存,稍后再读取它们。将少量开销添加到原始数据大小;使用30%的开销。这将为所需的总排序大小提供一个合理的估计。

对集合使用相同的策略。必须有空间为数据某处,没有魔术/压缩,使您的数据体积更小。如果您有最多1000行的内存,并尝试将它与1000.000行一起使用,那么它将不适合。在这种情况下,请与您的dba对话并尝试找到解决方案。这可能是因为您最终会对工作负载进行分区。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10505232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档