通過一個案例徹底讀懂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
通過一個案例徹底讀懂10046 trace--字節級深入破解