【CBO】基於成本優化器的基本原則(二)
這一部分的內容比較實用,在sql調優中很重要的一個方面就是調整連線,而最重要的三種join方式的原理,以及代價計算和相關效能引數調整都有詳述。並且開始大量使用診斷事件,如10032,10104,10046,10053等,最後用了一整個章節來講述10053,重點分析了oracle對不同join order的評測。基本上CBO的基本內容就是這些了,再結合一些物件的internal分析,等待事件分析,和更為詳盡和多樣的分析工具,絕大多數由sql帶來的效能問題都可以得到解決。當然如果優化器使用RBO則令當別論,使用RBO其實比CBO的原理更為簡單,後續再述。
七,點陣圖索引
略
八,查詢轉換
1,四種常見的查詢轉換
subquery
view merging
unnesting
star transformation
2,filter原理
3,push_subq與no_unnest 的hint
4,ordered_predicates的使用
5,no_merge hint
6,with as語句
7,檢視合併
8,使用10053檢視合併或不合並檢視的join order資訊
9,謂詞推進,注意join謂詞在推進中的位置
10,子查詢
相關隱含引數:
_unnest_notexists_sq,_unnest_subquery等
分類:
a,關聯的,或者不關聯的
b,簡單的,複雜的
c,聚合
d,單行
e,in,exists (半連線)
f,not in,not exists (反連線)
g,null 的問題
11,ordered hint
12,星型轉換join
九,join cardinality
1,join的selectivity和cardinnality
2,join by range:
a.join1 between b.join1 -n and b.join1 +n
join not equal:
a.join1 != b.join1
3,多表關聯的選擇性和card
十,nested loops
1,oltp系統中optimizer_index_caching的作用
對nest loop join的影響
2,nl原理,outer和inner表的確定
3,使用use_nl hint
4,nl的cost計算
十一,hash join
1,hash join 原理
hash join中的inner table用來構建hash cluster,inner table通常為小表
2,最優的(optimal)hash join
3,one pass hash join和multi pass hash join
4,調整hash_area_size來調整hash join
5,使用10104和10053事件追蹤和調整hash join
6,適合的hash_area_size與適合的hash partition。
7,調整pga_aggregate_target引數
8,9iCPU costing在enable與disable下的hash join的表現
9,多表關聯,hash join順序,ordered與swap_join_inputs 提示的使用
十二,sort and merge joins
1,排序操作的記憶體使用
2,sort_area_size和sort_area_retained_size引數
3,workarea_size_policy=auto,pga_aggregate_target引數,sort_multiblock_read_count引數
4,使用10046來觀察排序過程中的等待事件
5,排序的代價(io,cpu,space)計算(分析10053,10032)
6,merge join原理
7,cartesian merge join
8,一些sort的opration
a,sort(order by )
b,sort(unique)
c,sort(group by)
d,sort(aggregate)
9,集操作(set operations)
十三,使用10053
略
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16179598/viewspace-681289/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【CBO】基於成本優化器的基本原則(一)優化
- CBO Cost Formulas基於成本優化器的成本計算公式大全ORM優化公式
- 基於成本的Oracle優化法則Oracle優化
- 基於成本的Spark SQL優化器框架 [session]SparkSQL優化框架Session
- 【調優】CBO基礎(二)
- 基於CBO優化器謂詞選擇率的計算方法優化
- oracle基於cbo成本計算方式說明Oracle
- Spark SQL 效能優化再進一步 CBO 基於代價的優化SparkSQL優化
- 【調優】CBO基礎
- 袋鼠雲數棧基於CBO在Spark SQL優化上的探索SparkSQL優化
- 基於成本的優化器 — 一般錯誤概念和問題(轉)優化
- 【調優】CBO基礎(八)
- 【調優】CBO基礎(六)
- 【調優】CBO基礎(五)
- 【調優】CBO基礎(四)
- 【調優】CBO基礎(三)
- 基於CBO最佳化器謂詞選擇率的計算方法
- [zt] 收集基於成本的優化統計資料 - 分割槽表優化
- Oracle優化器(RBO與CBO)Oracle優化
- Oracle優化器的RBO和CBO方式Oracle優化
- Oracle約束Constraint對於CBO優化器的作用OracleAI優化
- Oracle的優化器的RBO和CBO方式Oracle優化
- Oracle Optimizer:遷移到使用基於成本的最佳化器-----系列1.1 (轉)Oracle
- 【效能優化】CBO優化器兩個內建的假設優化
- 基於正則化的多工聯邦
- 前端基於瀏覽器儲存的AJAX效能優化前端瀏覽器優化
- mysql 基於規則的執行計劃(二)MySql
- Oracle效能優化方法論的發展之二:基於OWI的效能優化方法論Oracle優化
- 測量、基線和效能優化之三:基於測量、基線和變化的效能優化優化
- mysql優化篇(基於索引)MySql優化索引
- 簡單介紹Oracle的RBO/CBO優化器Oracle優化
- 基於 PageSpeed 的效能優化實踐優化
- 測量、基線和效能優化之三:基於測量、基線和變化的效能優化v優化
- SQL Server SQL語句進行優化的基本原則SQLServer優化
- 基於 XAF Blazor 的規則引擎編輯器Blazor
- 讀書筆記-《基於Oracle的SQL優化》-第二章-1筆記OracleSQL優化
- Curve 基於 Raft 的寫時延優化Raft優化
- 資訊的優化必須基於業務需要優化