SQL優化--查詢優化技術分類

n672 9年前發布 | 13K 次閱讀 SQL

數據庫調優的方式通常有如下幾種:

1)人工調優。

主要依賴于人,效率低下;要求操作者完全理解常識所依賴的原理,還需要對應用、數據庫管理系統、操作系統以及硬件有廣泛而深刻的理解。
2)基于案例的調優
總結典型應用案例情況中數據庫參數的推薦配置值、數據邏輯層設計等情況,從而為用戶的調優工作提供一定的參考和借鑒。但這種方式忽略了系統的動態性和不同系統間存在的差異。
3)自調優。

為數據庫系統建立一個模型,根據“影響數據庫系統性能效率的因素”,數據庫系統自動進行參數的配置。一些商業數據庫,實現了部分自調優技術。


查詢優化技術的分類:①查詢重用、②查詢重寫規則、③查詢算法優化、④并行查詢優化、⑤分布式查詢優化、⑥其他優化技術

1)查詢重用:是指盡可能利用先前的執行結果,以達到節約查詢計算全過程的時間并減少資源消耗的目的。

主要分為以下兩種類型:

a)查詢結果的重用。在緩存區中分配一塊緩沖塊,存放該SQL 語句文本和最后的結果集,當同樣的SQL輸入時,直接把結果返回。查詢結果的重用技術節約了查詢計劃生成時間,減少了查詢執行全過程的資源消耗。

b)查詢計劃的重用。緩存一條查詢語句的執行計劃及其相應語法樹結構。查詢計劃的重用技術減少了查詢計劃生成的時間和資源消耗。

2)查詢重寫:是查詢語句的一種等價轉換,即對于任何相關模式的任意狀態都會產生相同的結果。

查詢優化技術類型:

a)語法級。查詢語言層的優化,基于語法進行優化。

b)代數級。查詢使用形式邏輯進行優化,運用關系代數的原理進行優化。

c)語義級。根據完整性約束,對查詢語句進行語義理解,推知一些可優化的操作。

d)物理級。物理優化技術,基于代價估算模型,比較得出各種執行方式中代價最小的。

查詢重寫是基于語法級、代數級、語義級的優化,可以統一歸屬到邏輯優化的范疇:基于代價估算模型是物理層面的優化,是從連接路徑中選擇代價最小的路徑的過程。

查詢優化重寫思路:

a)將過程性查詢轉換為描述性的查詢,如視圖重寫。

b)將復雜的查詢(如嵌套子查詢、外連接消除、嵌套連接消除)盡可能轉換為多表連接查詢。

c)將效率低的謂詞轉換為等價的效率高的謂詞(如等價謂詞重寫)。

3)查詢優化算法:求解給定查詢語句的高效執行計劃的過程。也就是查詢計劃,也稱為查詢樹,它由一系列內部的操作符組成,這些操作符按一定的運算關系構成查詢的一個執行方案。

生成最優查詢計劃的策略:

a)基于規則優化。

根據經驗或一些已經探知或被證明有效的方式,定義為“規則”(如根據關系代數得知的規則、根據經驗得知的規則等),用這些規則化簡查詢計劃生成過程中符合可被化簡的操作,使用啟發式規則排除一些明顯不好的存取路徑,這就是基于規則的優化。

b)基于代價優化。

根據一個代價評估模型,在生成查詢計劃的過程中,計算每條存取路徑(存取路徑主要包括上述三個“關系結點”)的花費,然后選擇代價最小的作為子路徑,這樣直至所有表連接完畢得到一個完整的路徑。主流數據庫都采用了基于規則和基于代價的技術。

4)并行查詢優化:在并行數據庫系統中,查詢優化的目標是尋找具有最小響應時間的查詢執行計劃,這需要把查詢工作分解為一些可以并行運行的子工作。一些商業數據庫提供了并行查詢的功能,用以優化查詢執行操作。

在同一個SQL內,查詢并行可以分為:

a)操作內并行。將同一操作如單表掃描操作、兩表連接操作、排序操作等分解成多個獨立的子操作,由不同的CPU同時執行。

b)操作間并行。一條SQL查詢語句可以分解成多個子操作,由多個CPU執行。

5)分布式查詢優化:在分布式數據庫系統中, 查詢策略優化是查詢優化的重點。主要是數據傳輸策略,A、B兩結點的數據進行連接,是A結點數據傳輸到B結點或是從B到A或是先各自進行過濾然后再傳輸等)和局部處理優化(傳統的單結點數據庫的查詢優化技術)。

在分布式數據庫系統中,代價估算模型為:

總代價 = I/O代價 + CPU代價 + 通信代價

 本文由用戶 n672 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!