dbeaver查看执行计划_执行计划2:查看更多的信息

译者 林锦森 · 沃趣科技数据库技术专家出品 沃趣科技在Part 1中我们了解了两种获取执行计划的方式,第一种是优化器预测它将会怎么执行,通过以下方法查询获取:explainplanfor{sqlstatement}select*fromtable(dbms_xplan.display);第二种是优化器在我们执行语句后真正的执行路径,通过以下方法查询获取:setser...
摘要由CSDN通过智能技术生成
37426c4b263f14a6f9639dec2388aa83.png

译者  林锦森 · 沃趣科技数据库技术专家

出品  沃趣科技

31ece19cdd9f943c5545d0c4390baef6.png

在Part 1中我们了解了两种获取执行计划的方式,第一种是优化器预测它将会怎么执行,通过以下方法查询获取:

explain plan for {
    sql statement}
select * from table(dbms_xplan.display);
第二种是优化器在我们执行语句后真正的执行路径,通过以下方法查询获取:
set serveroutput off
{ sql statement}
select * from table(dbms_xplan.display_cursor);

事实上,在Part 1中,我故意使用两种获取执行计划的方法,来证明对同一条存在绑定变量的语句可以生成两种截然不同的执行计划。

Part 2中我们会评估几种查看真实执行计划的方法,但是首先我们关注目前我们接触到函数的其他调用选项,这会使我们对执行计划在最终用户的环境中的复现更加自信。

Format Options

一般来说,如果想要执行计划与最终用户环境一致的话,我们需要他们生产数据的备份,对应的统计信息,系统的参数还有一致的输入。 生产数据以及统计信息一般都是一样的,所以我们真正需要关注的就是客户环境是否不同以及语句输入; 我们可以通过数据库来帮助我们获取在某一刻的执行信息。 这里也有一个小提醒,需要注意数据、统计信息还有谓词条件的及时同步。 举个例子,如果你的生产数据是好几个星期前的,那么你执行语句时要根据几个星期前用户当时执行的语句去执行; 因为如果条件中存在SYSDATE,那么就不能很好的模拟当时的环境。 在Part 1中提到过的,调用dbms_xplan.display_cursor()可以赋值三个参数,它们分别是sql_id,child_number和formatting option。 有两个formatting option参数能有效的帮助你解决最近一次出现的问题,"peeked_binds"和"outline"。 前者会列出(只需要一点运气)优化查询时使用的真实的值,后者会提供一个hint的列表,如果我们为了这个查询创建了一个存储大纲或者SQL Plan Baseline,通过这些hint我们可以发现优化器的环境是否不同。 这里有个小例子,通过对视图dba_extents的copy表的查询来演示使用和输出。
alter session setworkarea_size_policy = manual;
alter session setsort_area_size = 10485760;

alter session setoptimizer_mode = first_rows_10;
alter session set"_hash_join_enabled" = false;

set serveroutput off

variable m_owner varchar2(32)
variable m_object varchar2(32)
execute :m_owner :='TEST_USER&#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值