首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定我的查询将使用多少临时表空间?

如何确定我的查询将使用多少临时表空间?
EN

Stack Overflow用户
提问于 2020-04-10 16:16:43
回答 2查看 258关注 0票数 1

我有一个以result结尾的查询的问题:"unable to extend segment by 128 in tablespace TEMP“。我对它进行了一些优化,但我仍然需要检查这种优化是否足够。有没有办法检查在优化前后它使用了多少表空间?Explain Plan告诉我现在好多了,但不幸的是它不会告诉我关于表空间的信息。

我的数据库是oracle 11g。

EN

回答 2

Stack Overflow用户

发布于 2020-04-11 04:57:41

有时解释计划会显示估计使用了多少临时空间,但根据我的经验,这些估计有时会比使用的高出许多倍。而且有很多因素会影响从一次执行到下一次执行需要多少空间。但您可以对各种更改执行EXPLAIN PLAN,并在很少或没有临时空间的情况下查找结果。请注意,即使计划输出没有说明它将使用临时空间,但在实际调用时可能会使用临时空间。

如果您将数据库参数pga_aggregate_target设置为非零值,则可以使用dbms_xplan程序包请求内存使用量:

代码语言:javascript
复制
select * from table(
    dbms_xplan.display_cursor(sql_id=>'dwgxfu778vgn8', 
        format=>'allstats, memstats'));

最好的方法是寻找可能的方法来消除TEMP的使用,例如如果可能的话,不使用ORDER BY子句。此外,哈希连接可能会占用大量内存。

票数 1
EN

Stack Overflow用户

发布于 2020-04-14 11:02:10

我不确定这是否有帮助,但我正在使用Toad for Oracle来管理表空间的使用情况。从那里,您可以看到每次的使用情况,如果需要,只需扩展大小。

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

https://stackoverflow.com/questions/61136436

复制
相关文章

相似问题

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