深入優化DB2 數據庫的五個最佳實踐 (1) 數據庫設計 關鍵字:數據庫設計 結構化查詢語言( SQL )對于關系型DBMS是把雙刃劍,利弊參半。因為從關系型數據庫檢索任何數據都需要SQL,本文所要探討的話題就是:不論是終端用戶還是 開發 人員或是數據庫管理員(DB
結構化查詢語言(SQL)對于關系型DBMS是把雙刃劍,利弊參半。因為從關系型數據庫檢索任何數據都需要SQL,本文所要探討的話題就是:不論是終端用戶還是開發人員或是數據庫管理員(DBA),他們將如何訪問一個關系型數據庫。當使用高效的SQL時,系統會變得易于升級、靈活、而且便于管理。當使用低效的SQL時,響應時間和程序運行時間都會延長,并且還會產生應用系統的中斷。鑒于通常的數據庫系統一般要花費90%的處理時間用于從數據庫檢索數據,由此很明顯的可以看出盡可能的保證SQL的高效是多么的重要??疾焱ǔ5腟QL語句問題譬如"SELECT*FROM"僅是冰山一角,我們將在本文中探討其他容易確定的普遍的問題。需要記住的是,檢索得到同一數據的SQL語句有很多種殊途同歸的寫法,所以不存在好的查詢語句或是壞的查詢語句,而只有滿足適當需求的查詢語句。各關系型數據庫都有自己的方式來優化和執行查詢語句。因此,各DBMS都擁有自己的最佳性能的查詢技巧。本文將使用Quest軟件中QuestCentralforDB2的例子和概述來集中討論DB2forOS/390和z/0S。
要是在十七年前,這張技巧單會更長,并且會包含對最小化的SELECT場景的矯正方法。每一個新版本的DB2都會增加成千上萬行的新代碼,用以擴展智能優化,和查詢重寫及執行。例如,多年來一種被稱為數據管理器的組件,通常被提供作為"第一階段處理"以增加它的過濾容量一百倍。另一組件是關系型數據服務器,通常被提供作為"第二階段處理"來進行其主函數的查詢重寫和優化。另一關鍵組件就是基于當前的SQL,并使用存取路徑以決定檢索數據的DB2優化器。DB2優化器改善了每一個DB2的版本,考慮到另外的DB2目錄中的統計,可以提供新的和改善過的存取路徑。圖1顯示了這些組件及其他更多的部分,并描述了DB2如何處理數據或SQL的請求。這就是以下DB2SQL性能技巧的來源。
圖1:DB2Engine和一些組件介紹
在這篇文章中,我們將回顧一些更具有代表性的SQL問題,有更多的SQL方面的性能技巧超出了本篇文章描述的范圍。像所有指導方針一樣,所有這些技巧也會有一些例外。
技巧1:核實是否提供了適當的統計:
對于DB2優化器來說,最重要的資源除了SELECT語句本身,就是DB2目錄中創建的統計。優化器基于眾多的選擇而使用這些統計。DB2優化器為了查詢而選擇一條非最佳存取路徑的主要原因,歸結于無效的或缺失的統計。DB2優化器使用以下目錄統計:
圖2:DB2優化器驗證過的列和用來確定的存取路徑
原文轉自:http://www.anti-gravitydesign.com