• 通过一个案例彻底读懂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

    ———————————————近期分享活动视频
    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元会员费。例如以下链接
    http://item.taobao.com/item.htm?spm=a1z10.1.w4004-6565782199.2.ul78Pt&id=38629931035

  • 相关阅读:
    C语言编程 两种方法打印一个菱形(渐入显示)
    Java编程格式输出中 printf 的使用实例
    C语言编程输入一个5位数以内的正整数,完成以下操作
    C语言编程判断两个矩阵是否相等(n阶矩阵)
    C语言编程输出100到200的素数的两种方法,和三步优化(逐步优化)
    Java编程中Math.random()的应用(随机生成数的应用)
    C语言编程求1X2X3····Xn所得的数末尾有多少个零
    C语言大数的阶乘
    maven构建一个简单的springboot项目
    nginx的配置
  • 原文地址:https://www.cnblogs.com/llguanli/p/7088969.html
Copyright © 2020-2023  润新知