Oracle数据库厉行计划详解

发表于:2011-9-21 09:58

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:caieyu    来源:51Testing软件测试网采编

  Oracle数据库厉行计划的相关知识是本文我们主要要介绍的内容,我们首先介绍了厉行计划的概念,然后给出了两个厉行计划的实例进行说明,最后介绍了Oracle优化器的形式以及厉行计划对我们的用途,接下来就让我们一起来了解一下这部分内容。

  什么是厉行计划

  所谓厉行计划,望文生义,即便对一个查询任务,做出一份怎样去告终任务的翔实计划。举个生存中的例子,我从珠海要去英国,我能够抉择先去香港然后起色,也能够先去北京起色,可能去广州也能够。然而究竟怎样去英国划算,也即便我的开支起码,这是一件划算考究的事情。同样对于查询而言,我们提交的SQL仅仅是描写出了我们的目标地是英国,但至于怎么去,等闲我们的SQL中是未曾给出提醒消息的,是由数据库来定夺的。

  我们先容易的看一个厉行计划的比拟:SQL> set autotrace traceonly

  厉行计划一:

以下是代码片段:

SQL> select count(*) from t;
COUNT(*)
----------
24815
Execution Plan
0 SELECT STATEMENT Optimizer=CHOOSE
10  SORT (AGGREGATE)
21 TABLE Access (FULL) OF 'T'

  厉行计划二:

以下是代码片段:

SQL> select count(*) from t;
COUNT(*)
24815
Execution Plan
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=26 Card=1)
10  SORT (AGGREGATE)
21 INDEX (FULL SCAN) OF 'T_INDEX' (NON-UNIQUE)(Cost=26 Card=28180)

  这两个厉行计划中,第一个表示求和是穿越举行全表扫描来做的,把全副表中数据读入内存来逐条累加;第二个表示依据表中索引,把全副索引读进内存来逐条累加,而无须去读表中的数据。然而这两种措施究竟哪种快呢?等闲来说可能二比一快,但也不是绝对的。这是一个很容易的例子演示厉行计划的差异。对于混杂的SQL(表连接、嵌套子查询等),厉行计划可能几十种甚至上百种,然而究竟那种良好呢?我们事前并不懂得,数据库本身也不懂得,然而数据库会依据定然的法定可能普查消息(statistics)去抉择一个厉行计划,等闲来说抉择的是比拟优的,但也有抉择失手的时候,这即便这次谈论的价值所在。

  Oracle优化器形式

  Oracle优化器有两大类,基于法定的和基于代价的,在SQLPLUS中我们能够察看init文件中定义的缺省的优化器形式。

以下是代码片段:

SQL> show parameters optimizer_mode
NAME TYPEVALUE
optimizer_mode string  CHOOSE
SQL>

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号