1. 程式人生 > >通過一個案例徹底讀懂10046 trace--字節級深入破解

通過一個案例徹底讀懂10046 trace--字節級深入破解

統計 merge tin 版本 單位 byte bbed 恢復 技術

轉載請註明出處: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--字節級深入破解