資料庫,資料庫學習

來源:互聯網
上載者:User

資料庫,資料庫學習
物理最佳化

代數最佳化改變查詢語句中操作的次序和組合,不涉及底層的存取路徑
對於一個查詢語句有許多存取方案,它們的執行效率不同, 僅僅進行代數最佳化是不夠的
物理最佳化就是要選擇高效合理的操作演算法或存取路徑,求得最佳化的查詢計劃

基於啟發學習法規則的存取直接選取最佳化

一、 選擇操作的啟發學習法規則:

二、 串連操作的啟發學習法規則:
1. 如果2個表都已經按照串連屬性排序
選用排序-合并方法
2. 如果一個表在串連屬性上有索引
選用索引串連方法
3. 如果上面2個規則都不適用,其中一個表較小
選用Hash join方法

. 可以選用嵌套迴圈方法,並選擇其中較小的表,確切地講是佔用的塊數(b)較少的表,作為外表(外迴圈的表) 。
理由:
設串連表R與S分別佔用的塊數為Br與Bs
串連操作使用的記憶體緩衝區塊數為K
分配K-1塊給外表
如果R為外表,則嵌套迴圈法存取的塊數為:
Br+ (Br/(K-1)) *Bs
顯然應該選塊數小的表作為外表

一、 統計資訊
基於代價的最佳化方法要計算各種操作演算法的執行代價,與資料庫的狀態密切相關

基於代價的最佳化

資料字典中儲存的最佳化器需要的統計資訊:
1. 對每個基本表
該表的元組總數(N)
元組長度(l)
佔用的塊數(B)
佔用的溢出塊數(BO)

2. 對基表的每個列

該列不同值的個數(m)
選擇率(f)
如果不同值的分布是均勻的,f=1/m
如果不同值的分布不均勻,則每個值的選擇率=具有該值的元組數/N
該列最大值
該列最小值
該列上是否已經建立了索引
索引類型(B+樹索引、Hash索引、叢集索引)
3. 對索引(如B+樹索引)
索引的層數(L)
不同索引值的個數
索引的選擇基數S(有S個元組具有某個索引值)
索引的葉結點數(Y)

二、 代價估算樣本

全表掃描演算法的代價估算公式

如果基本表大小為B塊,全表掃描演算法的代價 cost=B

如果選擇條件是碼=值,那麼平均搜尋代價 cost=B/2

如果比較條件是>,>=,<,<=操作
假設有一半的元組滿足條件就要存取一半的葉結點
通過索引訪問一半的表格儲存體塊cost=L+Y/2+B/2

比較複雜的查詢,尤其是涉及串連和嵌套的查詢
不要把最佳化的任務全部放在RDBMS上
應該找出RDBMS的最佳化規律,以寫出適合RDBMS自動最佳化的SQL語句
瞭解具體的查詢計劃表示,分析查詢的實際執行策略

相關文章

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.