运行计划之误区,为什么COST非常小,SQL却跑得非常慢?[通俗易懂]

运行计划之误区,为什么COST非常小,SQL却跑得非常慢?

大家好,又见面了,我是全栈君。

转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/38321477

 

2014.7.31就晚20:30 My Oracle Support组猫大师在线分享
《运行计划之误区,为什么COST非常小,SQL却跑得非常慢?》
如需了解很多其它请登录站点http://www.jianfengedu.com/Discuz/detail/id/58
运行计划之误区,为什么COST非常小,SQL却跑得非常慢?[通俗易懂]

+++我给你看个东西。

————————————————————————–
| Id  | Operation   | Name | Rows  | Bytes | Cost (%CPU)| Time  |
————————————————————————–
|   0 | SELECT STATEMENT  |  |     1 |    10 |   349   (1)| 00:00:05 |
|*  1 |  TABLE ACCESS FULL| T1  |     1 |    10 |   349   (1)| 00:00:05 |
————————————————————————–
Predicate Information (identified by operation id):
—————————————————
   1 – filter(“OBJECT_NAME”=’00440′)

table name:T1
column name:OBJECT_NAME
num_rows:87417
num distinct:48128
num_nulls:797
density:.0000115446779034865
histogram:HEIGHT BALANCED
high_value:4435(D5) — internal value:354151154089362000000000000000000000
low_value:3030343432(00442) — internal value:250207940888765000000000000000000000

00400 internal Value : 250207940886347000000000000000000000

ENDPOINT_VALUE      ENDPOINT_NUMBER BUCKET_COUNT
——————– ————— ————
46641      40  1
47796      41  1
A1      49  8
B2      58  9
C3      66  8
D5      75  9

 

Density = (Bucket_total – Buckets_all_popular_value)/
Bucket_total/(NDV – popular_values.COUNT)
 =(75 – 34)/75/(48128 – 4) = .00001136

Sel = .00001136 * (87417 – 797)/87417 * (1 – ((250207940888765000000000000000000000 – 250207940886347000000000000000000000)/

(354151154089362000000000000000000000 – 250207940888765000000000000000000000)))
= .000011256
Card = 87417 * .000011256 = .983965752

这是:col=val and val<low_value and value>2*low_value – high_value
相似这种条件的算法。

high_value:4435(D5) — internal value:354151154089362000000000000000000000
low_value:3030343432(00442) — internal value:250207940888765000000000000000000000

00400 internal Value : 250207940886347000000000000000000000

这三个数字是怎么得出来的?

D5在dba_tab_columns里,存成这种:4435, 事实上oracle内部计算用的值是:354151154089362000000000000000000000

 Density * A4Nulls * (1 – ((val – low_value)/(high_value – low_value)))这是公式, 有这个公式,是没实用的。

你不会用。

与事实上, 他在告诉你怎么COST,不如说,他是想告诉你。 怎么研究oracle的算法。

事实上就是告诉你, 怎么猜。 里面也有错的。

比方cardinality他都是用ceil()一下, 事实上。oracle多数情况下用round

国内顶级SQL优化课程

8月5号启动QTune系列I CBO内部算法–老猫
http://item.taobao.com/item.htm?spm=a1z10.1.w4004-6565782199.6.1TCjTi&id=40189797849

DSI之系列I CBO内部算法
–2014.8.5启动(14课时。7天课)
¥499/每人

选择率,基数计算公式
————————-
1. 单表无直方图
 1.1 (col = val)在range内
 1.2. (> < <= >= between, 在range内
 1.3. out-of range
 
2. 单表有frequency直方图
 2.1 (col = val)在range内
 2.2. (> < <= >= between, 在range内
 2.3. out-of range
 
3. 单表有hight balanced直方图
 2.1 (col = val)在range内
 2.2. (> < <= >= between。 在range内
 2.3. out-of range
 
4. Join选择率计算

成本计算公式:

1. 重要的概念 
—————– 
 1.1
 1.2 Cost计算模型.
 1.3 Cost单位. 
 1.4 单块读的次数(#SRds)
 1.5 多块读的次数(#MRds)
 1.6 系统统计信息
 1.7 Join Selectivity & Cardinality
 
2. 单表訪问(没有直方图) 
—————— 
 2.1 Cost Model Components
 2.2 全表扫描的成本计算
 2.3 表的Cardinality和selectivity
 
3. Index扫描 
—————— 
 3.1 公式:
 3.2 通过B*Tree index扫描表

Join
——— 
4. Nested Loop

5. Hash Join and Sort Merge Join

重磅推出后继课程
QTune系统II   transformaction.
QTune系统III   qtune案例实战
QTune系统IV   各种丰富的调优工具

不要4999,仅仅要¥499
边学边送,还赠送多年的心血SQ优化资料!

———————————————尖峰近期线上沙龙分享活动录制的视频
caibird2005分享主题《数据仓库环境的表拆分、分区表、并行计算 》
链接: http://pan.baidu.com/s/1eVA14

Clojure大师分享主题《rac study from scratch 》
链接: http://pan.baidu.com/s/16FRIm

Jack分享主题《存储的前世今生和未来—-存储的若干关键技术和虚拟化》
链接: http://pan.baidu.com/s/1eQrECQe

Dasight博士分享主题《大数据时代的技术发展和对IT人的挑战》
链接: http://pan.baidu.com/s/1bnenDtd
链接: http://pan.baidu.com/s/1sj0fJ5r

guoyJoe分享主题《BBED汇报演出 : UPDATE恢复揭密》
链接: http://pan.baidu.com/s/1i3mlPC5

Dasight博士分享主题《漫谈大数据》
链接: http://pan.baidu.com/s/1mgLrAuG
链接: http://pan.baidu.com/s/1c0hCsSS

杜兴分享主题《MySQL 5.6版本号特性介绍及怎样从MySQL 5.5向MySQL 5.6》
链接: http://pan.baidu.com/s/1eQ5oQp8
东大博士Dasight分享主题《Hadoop与Nosql技术的适用性分析》
链接: http://pan.baidu.com/s/1mg9g3Za
猫大师在线分享《通过一个案例彻底读懂10046 trace–字节级深入破解》
链接: http://pan.baidu.com/s/1pJsfFWv
链接: http://pan.baidu.com/s/1GmLqu 

增加VIP就可以免费获得以上分享视频。以及今后的分享都会给出,仅仅要10元会员费,例如以下链接
http://item.taobao.com/item.htm?spm=a1z10.1.w4004-6565782199.2.ul78Pt&id=38629931035

【尖峰线上沙龙技术分享QQ交流群】  252296815
【尖峰线上沙龙技术YY频道】10799487
创造良好的Oracle技术氛围,精心分享各种Oracle学习资源。广集圈内好友,
 定期开展公益YY课堂深入学习以及适当线下交流!

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116095.html原文链接:https://javaforall.net

(0)
上一篇 2022年1月26日 上午9:00
下一篇 2022年1月26日 上午10:00


相关推荐

  • 什么是脚本,脚本语言?

    什么是脚本,脚本语言?一 脚本百科解释 脚本 script 是使用一种特定的描述性语言 依据一定的格式编写的可执行文件 又称作宏或批处理文件 脚本通常可以由应用程序临时调用并执行 各类脚本目前被广泛地应用于网页设计中 因为脚本不仅可以减小网页的规模和提高网页浏览速度 而且可以丰富网页的表现 如动画 声音等 举个最常见的例子 当我们点击网页上的 E mail 地址时能自动调用 OutlookExpre 或 Fox

    2026年3月20日
    1
  • 数据库concat函数

    数据库concat函数因文件改动读到老大写的代码发现该函数所以记录一下concat用法就是将数据库不同的字段串起来比如要查询nameagesex最终想出来的结果是连起来的就可以用该函数而不用再将结果拼接eg:selectid,concat(name,sex,age)asinfofromusr;这样就会输出结果info=>小明男12该函数中间可以拼接字符用来分割eg:selectid,concat(name,”,sex,”,age)…

    2022年5月9日
    74
  • 图像拼接算法简介

    图像拼接算法简介图像拼接方法简介图像拼接的主要流程图像拼接的三个关键技术点 预处理 图像配准 图像融合 i 图像预处理包括数字图像处理的基本操作 如去噪 边缘提取 直方图处理等 建立图像的匹配模板以及对图像进行某种变换 傅里叶变换 小波变换等 ii 图像配准采用一定的匹配策略 找出待拼接图像中的模板或特征点在参考图像中对应的位置 进而确定两幅图像之间的变换关系 iii 建立变

    2026年3月19日
    2
  • Qt类之QAction

    Qt类之QActionQAction 类 1 QAction QAction constQString amp text QObject parent QAction 类的构造函数之一 利用 text parent 创建 QAction 对象 QAction 对象一般为菜单中的菜单项 比如 文件 菜单中 新建 选项就是一个 QAction 对象 上述构造函数中 text 成员变量即为菜单项所表示的内容 2 可以通过 QWid

    2026年3月16日
    2
  • css 渐变背景_照片背景换成蓝色渐变

    css 渐变背景_照片背景换成蓝色渐变CSS渐变背景看这一篇就够了在我们自己设计网页的时候,为了好看美观,颜色可谓是最让人头疼的一部分。尤其是在配色上又找不到一些好看的网站。今天我就来记录一些好看的渐变式背景,和一些常用的颜色网站。CSS渐变使可以显示两种或多种指定颜色之间的平滑过渡。让我们来玩一玩,看能玩出什么花来。CSS定义了两种渐变类型:一、线性渐变(向下/向上/向左/向右/对角线)我们通过属性linear-gradient来这样定义一个线性渐变。background-image:linear-gradient(方向

    2025年8月22日
    4
  • 讲得了课、押得中题、学习规划还能量身定制,真卷到点子上的只有它

    讲得了课、押得中题、学习规划还能量身定制,真卷到点子上的只有它

    2026年3月14日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号