关于Optimizer_index_cost_adj参数的设置

简介: 关于Optimizer_index_cost_adj参数的设置 Thomas建议:对于许多系统,应到考虑设置这两个参数为非默认值,至少测试一下两种极端情形: 1. optimizer_index_caching=0 和 optimizer_index_cost_adj=100的默认值. 他们一般适用于许多数据仓库/报表系统 2. otpimizer_index_caching=90和optimizer_index_cost_adj=25的设置,他们一般适用于许多事物处理系统/oltp系统. 对于数据仓库和DSS系统要反复调整来取一个合理值。

关于Optimizer_index_cost_adj参数的设置

Thomas建议:
对于许多系统,应到考虑设置这两个参数为非默认值,至少测试一下两种极端情形:

1. optimizer_index_caching=0 和 optimizer_index_cost_adj=100的默认值. 他们一般适用于许多数据仓库/报表系统

2. otpimizer_index_caching=90和optimizer_index_cost_adj=25的设置,他们一般适用于许多事物处理系统/oltp系统.

对于数据仓库和DSS系统要反复调整来取一个合理值。
Oracle在选择不同的访问路径时,会对全表扫描和索引扫描进行比较评估,在比较的时候,
Oracle会把索引扫描的成本转换为全表扫描的成本,和全表扫描的COST进行比较。这个转换需要一个转换因子,就是Optimizer_index_cost_adj;
Optimizer_index_cost_adj*(index scan cost)=等价的Full Scan cost

所以 optimizer_index_cost_adj = Full Scan Cost / Index Scan Cost

在缺省情况下:Optimizer_index_cost_adj=100

SQL> show parameter optimizer_index_cost_adj
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
optimizer_index_cost_adj             integer     100
SQL> create table t3 as select * from dba_objects;
Table created

SQL>
SQL> create index ind_owner on t3(owner);
Index created
SQL> analyze table t3 compute statistics;

SQL> set autotrace on
SQL> set timing on
SQL> set autotrace traceonly

SQL> alter session set optimizer_index_cost_adj=43;

Session altered.

select  /*+ FULL(t3)*/* from bia_stg.t3 t3 where owner='BIA_STG';

322 rows selected.

Execution Plan
----------------------------------------------------------
Plan hash value: 2574254479

--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |  3044 |   255K|   130   (2)| 00:00:02 |
|*  1 |  TABLE ACCESS FULL| T3   |  3044 |   255K|   130   (2)| 00:00:02 |
--------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("OWNER"='BIA_STG')

Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
        739  consistent gets
          0  physical reads
          0  redo size
      23185  bytes sent via SQL*Net to client
        700  bytes received via SQL*Net from client
         23  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
        322  rows processed

SQL> select /*+ index(t3 ind_owner)*/* from bia_stg.t3 t3 where owner='BIA_STG';

322 rows selected.

Execution Plan
----------------------------------------------------------
Plan hash value: 2790462862

--------------------------------------------------------------------------------
---------

| Id  | Operation                   | Name      | Rows  | Bytes | Cost (%CPU)| T
ime     |

--------------------------------------------------------------------------------
---------

|   0 | SELECT STATEMENT            |           |  3044 |   255K|    89   (0)| 0
0:00:02 |

|   1 |  TABLE ACCESS BY INDEX ROWID| T3        |  3044 |   255K|    89   (0)| 0
0:00:02 |

|*  2 |   INDEX RANGE SCAN          | IND_OWNER |  3044 |       |     8   (0)| 0
0:00:01 |

--------------------------------------------------------------------------------
---------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access("OWNER"='BIA_STG')

Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
         65  consistent gets
          0  physical reads
          0  redo size
      23185  bytes sent via SQL*Net to client
        700  bytes received via SQL*Net from client
         23  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
        322  rows processed

optimizer_index_cost_adj = Full Scan Cost / Index Scan Cost* 100=130/89 * 100=1.460 * 100

=146

optimizer_index_cost_adj调整为147

目录
相关文章
|
C语言 Perl 存储
优化求解器之MPS文件的格式简介
在使用MindOpt优化求解器解决实际问题时,其中重要的一环在于如何建立优化模型,以及存储优化模型以便于作为求解器的输入文件。存储优化模型的文件,其关键在于定义一种清晰的格式,用来说明优化模型的数学结构和相关的数据。接下来我们将发布一系列文章,对常见的MPS/LP等格式的模型文件和命名规范进行简要的介绍。
优化求解器之MPS文件的格式简介
|
7月前
|
安全 Linux 数据安全/隐私保护
【Linux】深入理解linux权限
本文深入解析Linux权限管理机制,涵盖权限概念、用户角色、文件属性及操作方法。文章分为前言、权限介绍、用户与角色、文件属性、权限修改及常见问题六大板块。详细说明了权限类型(r/w/x)、角色优先级、chmod/chown指令用法,以及目录权限、umask掩码、粘滞位等重点内容。掌握这些知识,可有效提升Linux系统安全性和灵活性,是管理员必备技能。喜欢的话别忘了点赞支持哦! ❤❤❤
351 6
|
12月前
|
Cloud Native 关系型数据库 分布式数据库
开发者如何使用云原生数据库PolarDB
【10月更文挑战第5天】开发者如何使用云原生数据库PolarDB
364 2
|
12月前
|
数据采集 前端开发 测试技术
Selenium中定位元素的9种方法
在Selenium中,定位页面元素是自动化测试和网页爬虫的基础。常用的9种元素定位方法包括:ID、Name、Class Name、Tag Name、CSS Selector、XPath、Link Text、Partial Link Text,以及XPath和CSS选择器的组合使用。每种方法各有优劣,建议根据页面的具体情况和元素的属性选择最合适的方法,并使用显式等待确保元素可用。
1587 5
|
存储 索引 Python
Python列表的循环遍历详解
Python列表的循环遍历详解
409 1
|
消息中间件 NoSQL 关系型数据库
"通俗介绍:什么是 Redis ? "
Redis 是一款内存中的数据存储系统,常用于数据库、缓存、消息中间件和流式引擎。它的特点是速度快,尤其在分布式系统中发挥优势,允许不同进程间共享内存中的数据。相比传统数据库如 MySQL,Redis 访问更快但存储空间有限,适合存储热点数据以提升性能。Redis 也可作为 MySQL 的缓存,但涉及数据同步问题。最初设计目的是作为消息中间件,但现在有更多专门的消息队列系统可选。
228 0
|
Ubuntu Linux 网络安全
在Linux中,能否给⼀个网卡配置多个IP? 如果能,怎么配置?
在Linux中,能否给⼀个网卡配置多个IP? 如果能,怎么配置?
|
人工智能 安全 定位技术
IT风险管理:识别、评估与缓解的艺术
【6月更文挑战第22天】面对数字化时代的挑战,企业需精通识别、评估与缓解IT风险以保障数字资产安全。本文聚焦风险识别的关键性,使用头脑风暴等工具发现潜在风险;通过概率-影响矩阵等评估风险严重性;并采取加强安全防护、完善制度等措施缓解风险,确保企业稳定运营。持续提升风险管理能力至关重要。
|
SQL Oracle 关系型数据库
解决Oracle的状态: 失败 -测试失败: IO 错误: The Network Adapter could not establish the connection
解决Oracle的状态: 失败 -测试失败: IO 错误: The Network Adapter could not establish the connection
2468 0
解决Oracle的状态: 失败 -测试失败: IO 错误: The Network Adapter could not establish the connection
|
网络协议 应用服务中间件 nginx
性能提升-如何设置Windows操作系统TIME_WAIT状态的TCP连接快速回收时间?
性能提升-如何设置Windows操作系统TIME_WAIT状态的TCP连接快速回收时间?
451 0