通過一個案例徹底讀懂10046 trace--位元組級深入破解,10046trace--

來源:互聯網
上載者:User

通過一個案例徹底讀懂10046 trace--位元組級深入破解,10046trace--

轉載請註明出處: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:T1column name:OBJECT_NAMEnum_rows:87417num distinct:48128num_nulls:797density:.0000115446779034865histogram:HEIGHT BALANCEDhigh_value:4435(D5) -- internal value:354151154089362000000000000000000000low_value:3030343432(00442) -- internal value:25020794088876500000000000000000000000400 internal Value : 250207940886347000000000000000000000ENDPOINT_VALUE     ENDPOINT_NUMBER BUCKET_COUNT-------------------- --------------- ------------46641  40147796  411A1  498B2  589C3  668D5  759


 

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

 


我的電腦案頭有一個檔案叫start tracetxt 867位元組是個什檔案

文字檔。
看有沒有用。 沒用就刪掉了。。
怕有用刪掉前先備份下。不就行了。
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.