Oracle Optimizer:迁移到使用基于成本的优化器-----系列2.1

oracle|优化

Oracle Optimizer:迁移到使用基于成本的优化器-----系列2.1

 

系列之二包含影响优化器选择执行计划的初始化参数和Oracle内部隐藏参数,合理设置这些参数对于优化器是相当重要的。

      

6.影响优化器的初始化参数

       除了生成统计资料之外,下面提及的参数设置在你的系统正常工作中扮演着极重要的角色.这些设置将大多依赖于你想创建何种类型的环境。联机,批处理,数据仓库或多于一个的组合。请注意优化器考虑这些参数以评估每一个在CBO生成的执行计划.

       在下面例子中提及的参数值是这样的(它已在Oracle8.1.7.4中一些联机事务处理运行结果良好),Oracle给你决定想维护何种设置的自由.因此不要仅保持默认值并且确信对于每个需求设置这些参数.

 

    6.1) OPTIMIZER_MODE

 

       此项决定优化器引擎运行在何种模式下。有效值:RULE, CHOOSE, ALL_ROWS, FIRST_ROWS (_n).已在第一部分3.2.2解释CBO选项.

       可将OPTIMIZER_MODE设置为CHOOSE.这种中间类型的选项在RBO和CBO之间,

事实上,它试着在统计资料是否可用的情况下运行查询在CBO或RBO模式下。因此,如果出现在查询的表已生成统计资料,Oracle将优先采用CBO (ALL_ROWS only)

       例子: optimizer_mode = first_rows

 

     6.2) OPTIMIZER_FEATURES_ENABLE

 

       此项用来设置诸如8.1.5, 8.1.7, 9.0.0.的版本号。因为在每一个版本中CBO增加了新功能,它会改变并导致不同的执行计划。可以为你的程序调整设置版本号。请注意设置较低的版本将会防止以后版本新功能的使用。

       例子: optimizer_features_enable = 8.1.7

 

    6.3) OPTIMIZER_MAX_PERMUTATIONS  

    

       此项参数指定查询连接的最大排列数量以选择一个执行计划,它会影响查询的解析时间,应该设置一个较低的值。确保本节提及的另一个参数的正常设置以致于优化器在指定的上限内查找到一个最佳的执行计划。Oracle8中默认值为80000,意味着没有限制。Oracle9中默认值为2000.

       例子: optimizer_max_permutations = 2000

       另一参数OPTIMIZER_SEARCH_LIMIT覆盖了本参数的效果,它指定一个查询中最大的表数量,可以考虑排序笛卡尔连接。在Oracle8.1.6中已废弃.

时间: 2024-10-30 11:59:48

Oracle Optimizer:迁移到使用基于成本的优化器-----系列2.1的相关文章

Oracle Optimizer:迁移到使用基于成本的优化器-----系列1.1

oracle|优化 Oracle Optimizer:迁移到使用基于成本的优化器-----系列1.1        如果在Oracle以前的版本(7.0或更早)中开发应用程序,数据库会采用基于规则的优化器(译者注:以下称RBO),本篇将帮助你理解Oracle优化器并迁移到基于成本优化器(译者注:以下称CBO)的几种高效方法.下面是五大部分的第一部分   第一部分 1.         什么是优化器? 2.         为什么要优化? 3.         可用的优化器. 4.        

Oracle Optimizer:迁移到使用基于成本的优化器-----系列1.2

oracle|优化 Oracle Optimizer:迁移到使用基于成本的优化器-----系列1.2 3.2基于成本的优化器(CBO) 基于成本优化器遵循计算代价的方法学.所有的执行计划随成本标识,优化器选择成本最低的一个.在执行计划中,较高的成本将意味着较高的资源.成本越低,对查询来说越高效.CBO使用所有存储在数据字典中可用的统计资料信息和柱状图,用户提供提示和的参数设置来达成使用的成本,CBO生成所有可能访问方法的排列然后选择最合适的.排列的数量依赖于查询中出现的表数量,有时能达到约80,

Oracle Optimizer:迁移到使用基于成本的优化器-----系列1.3

oracle|优化 Oracle Optimizer:迁移到使用基于成本的优化器-----系列1.3   3.2.3     可用CBO模式 CBO有两种运行模式:ALL_ROWS和FIRST_ROWS. FIRST_ROWS的目标是尽可能最快的返回行.这种模式告诉优化器响应时间是最重要的.它偏好嵌套连接方式. FIRST_ROWS也以考虑成本为主要规则来处理行.通常规则是使用索引的计划而不是使用全表扫描的计划作为访问路径,ORDER BY子句导致索引访问,等等 从9i版本起,在First提示中

Oracle Optimizer:迁移到使用基于成本的优化器-----系列1.4

oracle|优化 Oracle Optimizer:迁移到使用基于成本的优化器-----系列1.4 3.2.3最低要求     用CBO的最低要求是设置优化器模式为FRIST_ROWS或者ALL_ROWS(或CHOOSE)并为对象生成统计资料.然而,这并不能保证你的系统能工作到最佳状态.参照第二部分(初始化参数)涉及初始化参数的信息.     不管是否设置优化器模式.如果有以下情况之一,CBO将会自动调用:      1.用到提示.     2.用到分区表.     3.设置并行表 3.2.4

MaxCompute理解数据、运算和用户的大脑:基于代价的优化器

MaxCompute简介 大数据计算服务(MaxCompute)是一种快速.完全托管的PB/EB级数据仓库解决方案,MaxCompute具备万台服务器扩展能力和跨地域容灾能力,是阿里巴巴内部核心大数据平台,承担了集团内部绝大多数的计算任务,支撑每日百万级作业规模.MaxCompute向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更快速的解决用户海量数据计算问题,有效降低企业成本,并保障数据安全. MaxCompute架构 MaxCompute基本的体系结构如上图所示,最底层就是

为什么基于代价的优化器做出错误选择

基于代价的优化器(CBO)在进行全表扫描时偶尔会作出一些错误的选择,这种情况尤其发生在Oracle7和Oracle8之中.有几种情况会导致这个问题,分别如下所示:最高使用标记(High water mark)太高:当要在一个表中进行大量的删除时,最高使用标记可能会远远高于实际用到的数据块(block)数量.因此,如果依赖于最高使用标记,CBO常常会错误的调用全表扫描. 错误的优化模式:如果OPTIMIZER_MODE被设置为ALL_ROWS或者CHOOSE,那么SQL优化器会更乐于使用全表扫描.

ORACLE优化器

oracle|优化 ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你当然也在SQL句级或是会话(session)级对其进行覆盖. 为了使用基于成本的优化器(CBO, Cost-Based Optimizer) , 你必须经常运行analyze 命令

如何选择Oracle优化器

1. 选用适合的Oracle优化器 Oracle的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性). 设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS .你当然也在SQL句级或是会话(session)级对其进行覆盖. 为了使用基于成本的优化器(CBO, Cost-Based Optimizer) , 你必须经常运行an

如何选择Oracle优化器使你事半功倍

  1. 选用适合的Oracle优化器 Oracle的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性). 设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS .你当然也在SQL句级或是会话(session)级对其进行覆盖. 为了使用基于成本的优化器(CBO, Cost-Based Optimizer) , 你必须经常运行