Oracle CBO 的 _sort_elimination_cost_ratio 参数

作者:Fenng 来源:dbanotes.net 时间:2008-07-22 12:24:00 

连续看到几个和 Oracle 优化器隐含参数 _sort_elimination_cost_ratio 相关的优化案例(Refer Refer )。

如果用 _SORT_ELIMINATION_COST_RATIO 作为关键字在 Metalink 上查询,会发现很多和该参数有关的 Bug ,执行计划的出错特征是也走了索引,但是走了索引全扫描(INDEX FULL SCAN),如果做 10053 Trace ,会发现有个烦人的 Recost for ORDER BY 步骤,然后就会引到错误的执行计划上。

在 9i 升级到 10g 最容易遇到这个问题(原来好好的,到了 10g 发现执行计划有问题了). 出问题的一般是走 INDEX RANGE SCAN 然后有个 ORDER BY 会触发,更多的时候优化器模式是 FIRST ROWS -- 这样 Oracle 会尽量消除排序,默认认为排序是开销昂贵的操作。通过控制 _SORT_ELIMINATION_COST_RATIO 隐含参数的值 (默认是0) 能够解决这个问题:

ALTER SESSION SET "_SORT_ELIMINATION_COST_RATIO"=5

其它可能的解决办法:对索引里面的排序保持和里的 ORDER by 一致。

其实说白了,很多 Oracle 隐含参数就是为了解决 Oracle 特定情况下的 Bug 的,因为不具备普遍性,所以在某些版本中作为隐含参数出现。在生产数据库上,个别的时候启用隐含参数倒也不是不行的,只要明白了相应的隐含参数到底是干啥的就成了。

题外话:_SORT_ELIMINATION_COST_RATIO 相关的 Bug 频繁出现,倒是感觉和 Oracle 内部代码管理有关,本来应该消除掉的,怎么后面的版本又跑了出来?

目前关于 CBO最好的书籍应该是Jonathan Lewis 的 Cost-Based Oracle Fundamentals ,有中文译本:《基于成本的Oracle优化法则》。是不可错过的一本书。

--EOF--

标签:Oracle,参数,数据库
0
投稿

猜你喜欢

  • 原生JS实现几个常用DOM操作API实例

    2024-04-25 13:09:27
  • Python实现问题回答小游戏

    2023-05-13 13:26:19
  • 详解使用python爬取抖音app视频(appium可以操控手机)

    2023-09-20 13:30:32
  • Django实现图片文字同时提交的方法

    2021-10-19 20:11:28
  • Python机器学习性能度量利用鸢尾花数据绘制P-R曲线

    2023-01-27 20:55:48
  • 用JavaScript实现单继承和多继承的简单方法

    2024-04-23 09:15:33
  • Pandas实现DataFrame按行求百分数(比例数)

    2022-10-23 10:49:01
  • Python中print函数简单使用总结

    2022-08-07 19:28:36
  • 用数据库生成不重复的流水号

    2007-10-06 22:49:00
  • Python字符串中删除特定字符的方法

    2023-07-25 18:58:54
  • Go项目实现优雅关机与平滑重启功能

    2023-07-16 07:36:13
  • django使用django-apscheduler 实现定时任务的例子

    2021-06-09 05:10:44
  • Python 实现将数组/矩阵转换成Image类

    2023-03-06 18:09:25
  • Pytorch使用transforms

    2023-11-01 20:34:33
  • Go语言中调用外部命令的方法总结

    2024-05-13 10:44:09
  • 2019 Python最新面试题及答案16道题

    2022-07-01 03:04:49
  • Pygame实战练习之一百层游戏

    2022-01-08 00:07:54
  • Python3压缩和解压缩实现代码

    2022-05-04 09:42:19
  • MySql安装启动两种方法教程详解

    2024-01-16 11:32:53
  • django项目简单调取百度翻译接口的方法

    2023-10-20 18:25:41
  • asp之家 网络编程 m.aspxhome.com