要正確的優化 sql
,我們需要快速定位能性的瓶頸點,也就是說快速找到我們 sql
,硬碟是每分鐘 7200
轉等等。因此,為了快速找到 sql
的效能瓶頸點,我們也需要了解我們計算機系統的硬體基本效能指標,下圖展示的當前主流計算機效能指標資料。
從圖上可以看到基本上每種裝置都有兩個指標:
延時(響應時間):表示硬體的突發處理能力;
頻寬(吞吐量):代表硬體持續處理能力。
從上圖可以看出,計算機系統硬體效能從高到代依次為:
cpu—— cache(l1-l2-l3)
——記憶體—— ssd
硬碟——網路——硬碟
由於 ssd
硬碟還處於快速發展階段,所以本文的內容不涉及 ssd
相關應用系統。
根據資料庫知識,我們可以列出每種硬體主要的工作內容:
cpu及記憶體:快取資料訪問、比較、排序、事務檢測、 sql
解析、函式或邏輯運算;
網路:結果資料傳輸、 sql
請求、遠端資料庫訪問( dblink
); 硬碟:資料訪問、資料寫入、日誌記錄、大資料量排序、大表連線。
根據當前計算機硬體的基本效能指標及其在資料庫中主要操作內容,可以整理出如下圖所示的效能基本優化法則:
這個優化法則歸納為 5
個層次: 1
、 減少資料訪問(減少磁碟訪問) 2
、 返回更少資料(減少網路傳輸或磁碟訪問) 3
、 減少互動次數(減少網路傳輸) 4
、 減少伺服器 cpu
開銷(減少 cpu
及記憶體開銷) 5
、 利用更多資源(增加資源)
由於每一層優化法則都是解決其對應硬體的效能問題,所以帶來的效能提公升比例也不一樣。傳統資料庫系統設計是也是盡可能對低速裝置提供優化方法,因此針對低速裝置問題的可優化手段也更多,優化成本也更低。我們任何乙個 sql
的效能優化都應該按這個規則由上到下來診斷問題並提出解決方案,而不應該首先想到的是增加資源解決問題。
以下是每個優化法則層級對應優化效果及成本經驗參考:
優化法則
效能提公升效果
優化成本
減少資料訪問
1~1000
低 返回更少資料
1~100
低 減少互動次數
1~20
低 減少伺服器 cpu
開銷 1~5
低 利用更多資源
@~10
高
資料庫訪問優化法則
從圖上可以看到基本上每種裝置都有兩個指標 延時 響應時間 表示硬體的突發處理能力 頻寬 吞吐量 代表硬體持續處理能力。從上圖可以看出,計算機系統硬體效能從高到代依次為 cpu cache l1 l2 l3 記憶體 ssd硬碟 網路 硬碟 根據資料庫知識,我們可以列出每種硬體主要的工作內容 cpu及記...
訪問資料庫優化法則
減少資料訪問 減少磁碟訪問 建立並正確使用索引 只通過索引訪問資料 優化sql執行計畫 返回更少的資料 減少網路傳輸 資料分頁處理 a 應用程式分頁 客戶端或瀏覽器 a 應用伺服器分頁 客戶端或瀏覽器 a 資料庫sql分頁 客戶端或瀏覽器 只返回需要的字段 減少互動次數 減少網路傳輸 使用儲存過程 ...
資料庫優化法則
1.有可能的話,用乙個語句處理多個更新 儘量減少對同乙個表的重複訪問。2.易識別的語句有助於定位效能問題。例如給sql語句加注釋,oracle已經解決為sql語句自帶注釋的問題 3.資料庫連線和互動好似萬里長城 長度越長,傳遞訊息越耗時。4.暫時工作表意味著以不太合理的方式儲存更多資訊。臨時表的弊端...