一些和优化器相关的初始化参数
1、OPTIMIZER_FEATURES_ENABLE
每个版本的Oracle 优化器特性都不相同,特别是做了版本升级以后一定要修改这个参数才可以使用仅被该版本支持的优化器特性。
可以赋予它的值如:9.2.0、9.0.2、9.0.1、8.1.7、8.1.6 等。
2、CURSOR_SHARING
这个参数会将SQL 语句中的常量用变量来替换,存在大量常量的OLTP 系统可以考虑启用这个参数。但是有一点要明白,绑定变量虽然可以使大量的SQL 重用,减少分析时间,但是当数据分布发生变化后,CBO 为绑定变量SQL 生成的执行计划可能不是最优(不会考虑具体的变量值)。通常OLTP 系统适用于绑定变量,OLTP 系统特点是,SQL 运行频繁且时间相对较短,SQL 的分析时间比重较大。如果在DSS 系统中,SQL 运行时间长,相比之下分析时间微不足道,好的执行计划才是最重要的,因此DSS 系统绑定变量要另行考虑。
3、HASH_AREA_SIZE
这是散列连接时散列表的存放区域,如果使用散列连接这个参数值不能过小,如果散列表不能完全存放于内存中,对散列连接性能的影响很大。如果是9i 建议启动工作区自动管理,然后设置PGA_AGGREGATE_TARGET。
4、SORT_AREA_SIZE
内存排序区的大小,如果排序时内存区不够会写如磁盘。9i 同样建议启动工作区自动管理,然后设置PGA_AGGREGATE_TARGET。
5、HASH_JOIN_ENABLED
如果启用这个参数,CBO 在考虑连接方法的时候将会考虑散列连接。
6、OPTIMIZER_INDEX_CACHING
这个参数表示被缓存的索引块所占百分比,可选值的范围是0-100。这个值会影响嵌套循环连接,如果这个值设得较高,CBO 将更倾向使用嵌套循环。
7、OPTIMIZER_INDEX_COST_ADJ
优化器利用这个参数(是个百分比)把索引扫描的成本转换为等价的全表扫描的成本,然后与全表扫描的成本进行比较。缺省值100,表示索引扫描成本与全表扫描成本等价。可选值范围是0-10000。
8、OPTIMIZER_MAX_PERMUTATIONS
这个初始参数用来设定优化器最多考虑多少种连接顺序,优化器不断的产生可能的表的连接的排列,直到排列数达到参数optimizer_max_permutations 为止。一旦优化器停止产生新的可能连接排列,它将会从中选择出成本最小的排列。
9、DB_FILE_MULTIBLOCK_READ_COUNT
这个参数表示在全表扫描或索引快速全扫描时一次I/O 读的连续数据块数量(block#连续,且一次I/O 不能超过extent)。
10、OPTIMIZER_MODE
优化器模式,也是优化器的优化目标。值为:RULE、CHOOSE、ALL_ROWS、FIRST_ROWS_n、FIRST_ROWS。
11、PARTITION_VIEW_ENABLED
如果设置为TRUE, 该优化器将跳过分区视图中未被请求的分区,该参数还能更改基于成本的优化程序从基础表统计信息计算分区视图统计信息的方式。
12、QUERY_REWRITE_ENABLE
如果设置为TRUE,优化器将利用可用的物化视图来重写SQL。
【SQL优化器】初始化参数
时间: 2024-09-18 09:43:08
【SQL优化器】初始化参数的相关文章
SQL优化器原理 - Join重排
这是ODPS有关SQL优化器原理的系列文章之一.我们会陆续推出SQL优化器有关优化规则和框架的其他文章.添加钉钉群"关系代数优化技术"(群号11719083)可以获取最新文章发布动态. 本文的目标是解释Join重排这个特性的基础概念和算法,如果想快速了解并在MaxCompute上使用这个特性,请直接跳到"总结". 简介 Join重排是经典的SQL优化问题.考虑3个表的自然连接 A ⋈ B ⋈ C ,在不影响最终结果集的前提下,可以改变连接的顺序为下列: A ⋈ C
SQL优化器原理-Shuffle优化
这是MaxCompute有关SQL优化器原理的系列文章之一.我们会陆续推出SQL优化器有关优化规则和框架的其他文章.添加钉钉群"关系代数优化技术"(群号11719083)可以获取最新文章发布动态. 本文主要介绍MaxCompute Optimizer对Shuffle方面的相关优化. 1 简介 分布式系统中,Shuffle是重操作之一,直接影响到了SQL运行时的效率.Join.Aggregate等操作符都需要借助Shuffle操作符,确保相同数据分发到同一机器或Instance中,才可以
SQL优化器原理-Metadata
这是MaxCompute有关SQL优化器原理的系列文章之一.我们会陆续推出SQL优化器有关优化规则和框架的其他文章.添加钉钉群"关系代数优化技术"(群号11719083)可以获取最新文章发布动态(二维码在文章末尾). 简介 SQL是一种关系代数,在进行关系代数等价转换时,我们利用Metadata获得更多的上下文和数据信息,而从获得更优的执行计划.为了进一步介绍Metadata如何让优化器更加"Smart",接下来会先介绍几种使用Metadata的场景. 场景 SEL
SQL优化器原理 - Auto Hash Join
这是MaxCompute有关SQL优化器原理的系列文章之一.我们会陆续推出SQL优化器有关优化规则和框架的其他文章.添加钉钉群"关系代数优化技术"(群号11719083)可以获取最新文章发布动态(二维码在文章末尾). 本文主要描述MaxCompute优化器实现的Auto Hash Join的功能. 简介 在MaxCompute中,Join操作符的实现算法之一名为"Hash Join",其实现原理是,把小表的数据全部读入内存中,并拷贝多份分发到大表数据所在机器,在 m
关键时刻HINT出彩 - PG优化器的参数优化、执行计划固化CASE
背景 有过数据库使用经验的童鞋可曾遇到过SQL执行计划不准确,或者SQL执行计划抖动的问题. PostgreSQL的执行计划与大多数的企业数据库是一样的,都是基于成本优化. 基于成本优化的优化器,在算法靠谱,统计信息准确的前提下,通常得到的执行计划是比较准确的. 那么什么时候执行计划可能不准确呢? 成本估算的算法不好 这个需要内核的不断改进,完善.在没有合理的算法支撑的情况下,内核中往往会带有一些经验值,或者将这些经验值开放给用户设置. 统计信息不准确 PG的统计信息收集调度是几个参数共同决定的
sql优化器探讨
优化 多年以来,商业数据库生产商一直致力于提高数据库的查询性能.尽管他们持续地付出努力和辛勤地工作,我们还是无法看到关系型数据库系统(rdbms)在性能上有显著的提高.用户继续忍受性能低下的sql语句,数据库专家们继续在sql语句优化的泥潭中痛苦挣扎. 本文将介绍数据库查询优化器是如何工作的.为什么问题持续存在,并深入探讨数据库查询优化器将来的发展方向. 数据库查询优化器 数据库查询优化器是rdbms服务器的一个组成部分.对于基于成本的优化,数据库查询优化器的任务是,通过产生可供选择的执行计划,
【SQL优化器查询变换器】视图合并(View Merging)
(基于成本的优化器组件) 查询变换器 被解析器解析过的查询语句进入查询变换器,表现出来的是一组查询块(query block), 这些查询块之间是相互关联的或者是嵌套的,查询的形式决定这些查询块相互之间如何被关联.查询变换器的主要目的就是决定改变查询的形式是否有利于产生一个好的执行计划.查询变换器使用四种不同的查询变换技术: 1- 视图合并(View Merging) 2- 谓词推进(Predicate Pushing) 3- 非嵌套子查询(Subquery Unnesting) 4-
使用优化器性能视图获取SQL语句执行环境
Oracle SQL语句的运行环境分为多个不同的层次,主要包括实例级别,会话级别,语句级别,其优先级依次递增.即语句级别的执行环境具有最高的优先权,会话级别次之,实例级别最低.反过来,实例级别的环境设置影响全局,而会话级别的则影响当前会话,语句级别的设置当然也就只影响当前语句.由此可知,运行环境中每一个环节的参数都对最终的数据库性能或所执行的SQL语句有直接的影响.因此在对数据库优化或调试SQL时,获得当前SQL语句运行环境显得尤为重要.为此,Oracle提供了三个重要的视图来获取不同级
【重磅干货】看了此文,Oracle SQL优化文章不必再看!
听"俊"一席话,胜读十年书.看了这篇由DBA+社群联合发起人丁俊大师(网名:dingjun123)分享的SQL优化大作,其他Oracle SQL优化文章都不必再看了! 专家简介 丁俊 网名:dingjun123 DBA+社群联合发起人 性能优化专家,Oracle ACEA,ITPUB开发版资深版主.8年电信行业从业经验,在某大型电信系统提供商工作7年,任资深工程师,从事过系统开发与维护.业务架构和数据分析.系统优化等工作.擅长基于ORACLE的系统优化,精通SQL.PL/