通过一个案例彻底读懂10046 trace--字节级深入破解
转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/37840583
2014.7.23晚20:30 Oracle support组猫大师分享《通过一个案例彻底读懂10046 trace--字节级深入破解》
如需了解很多其它课程请登录站点http://www.jianfengedu.com/Discuz/detail/id/56
【技术分享QQ交流群】 252296815
国内首创成就QTune的顶级高手之课
--》我保证。认真听完,并理解了我的课,一步一步成为QTune高手而且是一流高手!。。
SQL优化课程系列I CBO内部算法
SQL优化课程系统II transformaction.
SQL优化课程系统III qtune案例实战
SQL优化课程系统IV 各种丰富的调优工具
--》能从头听到尾, 真的能成QTune高手
我仅仅提一个问题, 有谁能把> 的选择率真的搞清楚? DIS上都没有讲清楚。
这些东西谁都没讲明确。 连oracle COE都说不清楚。
+++我给你看个东西
--------------------------------------------------------------------------
| 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束手无策,常常碰到相似以下的一些问题,这里我仅仅是举例。。
。
1. merge join cartestian引发的严重性能问题.
2. 为什么这条SQL一定要走index skip scan? --在patition表上rebuild index引起的问题.
3. 为什么这条SQL总是走full table scan?
4. 什么引发了wrong results?
要想搞懂SQL的根源问题。真正的算法,真正的底层,真正的干货。。
。请增加:
DSI之 系列1 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
———————————————近期分享活动视频 spm=a1z10.1.w4004-6565782199.2.ul78Pt&id=38629931035" target="_blank">http://item.taobao.com/item.htm?spm=a1z10.1.w4004-6565782199.2.ul78Pt&id=38629931035
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
增加VIP就可以免费获得以上分享视频,以及今后的分享都会给出。仅仅要10元会员费。例如以下链接
通过一个案例彻底读懂10046 trace--字节级深入破解的更多相关文章
- 一个案例彻底弄懂如何正确使用 mysql inndb 联合索引
有一个业务是查询最新审核的5条数据 SELECT `id`, `title` FROM `th_content` WHERE `audit_time` < 1541984478 AND `sta ...
- Java 多态 ——一个案例 彻底搞懂它
最近,发现基础真的hin重要.比如,Java中多态的特性,在学习中就是很难懂,比较抽象的概念.学的时候就犯糊涂,但日后会发现,基础在日常工作的理解中占有重要的角色. 下面,我将用一个代码实例,回忆和巩 ...
- 10046 trace详解(1)
10046 trace帮助我们解析一条/多条SQL.PL/SQL语句的运行状态,这些状态包括:Parse/Fetch/Execute三个阶段中遇到的等待事件.消耗的物理和逻辑读.CPU时间.执行计划等 ...
- 使用 10046 查看执行计划并读懂 trace 文件
查看 sql 执行计划的方法有许多种, 10046 事件就是其中的一种. 与其他查看 sql 执行计划不同, 当我们遇到比较复杂的 sql 语句, 我们可以通过 10046 跟踪 sql 得到执行计划 ...
- 读懂源码:一步一步实现一个 Vue
源码阅读:究竟怎样才算是读懂了? 市面上有很多源码分析的文章,就我看到的而言,基本的套路就是梳理流程,讲一讲每个模块的功能,整篇文章有一大半都是直接挂源码.我不禁怀疑,作者真的看懂了吗?为什么我看完后 ...
- 新手怎么读懂一个中型的Django项目
[前言]中型的项目是比较多的APP,肯会涉及多数据表的操作.如果有人带那就最好了,自己要先了解基本的django框架(MTV ,ORM等)师傅可以给讲解一下框架怎么组织url.py,model.py, ...
- 读懂一个中型的Django项目
转自https://www.cnblogs.com/huangfuyuan/p/Django.html [前言]中型的项目是比较多的APP,肯会涉及多数据表的操作.如果有人带那就最好了,自己要先了解基 ...
- [转载]循规蹈矩:快速读懂SQL执行计划的套路与工具
作者介绍 梁敬彬,福富研究院副理事长.公司唯一四星级内训师,国内一线知名数据库专家,在数据库优化和培训领域有着丰富的经验.多次应邀担任国内外数据库大会的演讲嘉宾,在业界有着广泛的影响力.著有多本畅销书 ...
- Oracle 10046 trace文件分析
生成10046 trace文件: SQL> create table t10046 as select * from dba_objects; Table created. SQL> se ...
随机推荐
- 紫书 习题 10-11 UVa 1646(斐波那契+高精度)
自己用手算一下可以发现是斐波那契数列,然后因为数字很大,用高精度 以后做题的时候记得算几个数据找规律 #include<cstdio> #include<cmath> #inc ...
- Fans同学已死,终年24岁
亲爱的同学们,朋友们,QQ好友. 告诉大家一个悲剧:Fans同学已死,终年24岁. 马甲变迁 正式告诉大家一个消息,我的ID"Fans同学"正在退出"历史舞台" ...
- 题解 P3521 【[POI2011]ROT-Tree Rotations】
这道题采用权值线段树合并的解法. 首先讲一下解法中出现的两个概念:权值线段树与线段树合并. 所谓权值线段树,可以理解为维护的信息反过来的普通线段树,我个人认为值域线段树这个名字其实要准确一些. 举个例 ...
- 安卓Gallery配合ImageSwitcher不显示图片
Gallary装的是缩略图(thumb),ImageSwitcher装的是大图. 不显示图片的一个可能原因是gallery没设置代理器,另一个原因是没使用相对布局. GalleryActivity.j ...
- KM最大匹配 HDU 2255
KM算法详解+模板 - wenr - 博客园 http://www.cnblogs.com/wenruo/p/5264235.html #include<iostream> #inclu ...
- 已知二叉树的中序序列为DBGEAFC,后序序列为DGEBFCA,给出相应的二叉树
面对这种问题时我们该怎么解决? 今天写数据结构题.发现了一道总是碰见问题的题在这里我写了一种求解方法我自己称它为分层递归求解. 第一步通过观察我们知道后序遍历时最后一个是根节点A 在中序序列中A的左边 ...
- CAShapeLayer的简单介绍以及基本使用
1.CAShapeLayer简单介绍 1.1CAShapeLayer继承于CALayer,能够使用CALayer的全部属性值: 1.2CAShapeLayer须要贝塞尔曲线配合使用才有意义(也 ...
- poj 2240 Bellman-Flod 求环
http://poj.org/problem?id=2240 深刻体现了自己代码能力有问题外加改模板能力有问题.外加Debug有问题.以后做到: 1.算法原理能够轻易弄出来. 2.代码模板自己收集各种 ...
- 轻松学习之Linux教程四 神器vi程序编辑器攻略
本系列文章由@超人爱因斯坦出品,转载请注明出处. 文章链接: http://hpw123.net/a/Linux/Linuxjichu/2014/1026/93. ...
- 关于Javascript的forEach 和 map
本篇博客转载自 https://blog.fundebug.com/2018/02/05/map_vs_foreach/ 如果你已经有使用JavaScript的经验,你可能已经知道这两个看似相同的方法 ...