談到資料庫優化概念,總感覺很龐大,無從下手;最近,聽了一次dba的分享,感覺有些思路;整理成文字,強化記憶;僅僅是一些個人理解和資訊聚合,可能有所偏差,還望有所指正:
[b]為什麼需要資料庫優化?[/b]
資料庫效能優化主要的目的無非就是降低資料庫響應時間,提公升資料庫響應能力tps;
[b]資料庫響應時間[/b]
資料庫響應時間=連線時間+sql解析時間+sql執行時間+結果集返回時間
可以看出需要優化的方面:資料庫連線、sql解析、sql執行、結果集這個四個方面;
可以將上述四方面的優化簡單來看:
1.sql執行:硬碟資料訪問與寫入、日誌記錄、排序、表連線、sga記憶體優化、比較
2.sql解析:執行計畫快取、sql解析、執行計畫優化(cbo/rbo)、表連線策略、索引策略、排序
3.結果集: 結果集記憶體快取、網路資料傳輸
4.資料庫連線:資料庫連線池、sql請求
資料庫io效能試圖:
[img]
從io效能來看,優化的方向:
1.減少磁碟訪問:硬碟資料訪問與寫入、日誌、大資料量排序、大表表連線、
2.減少網路傳輸:結果資料請求、sql請求、資料庫連線
3.降低cpu與記憶體開銷:sga快取資料訪問、比較、排序、表連線、事務檢測、sql解析、函式與邏輯運算
從上述兩個方向來看,優化的內容相同,劃分的問題不同:
從io效能方向的優化,可以參考:
mking's blog 面向程式設計師的資料庫訪問效能優化法則:[url]
從響應時間角度來看,其中涉及到了:sql執行、結果集、資料庫連線 等方面
對於sql解析方面涉及較少,這方面的資料可以參考:
oracle 執行計畫分析:
[url]
執行計畫優化策略:
oracle rbo、cbo簡介:[url]
如果想深入理解oracle資料庫體系結果,可以參考:
oracle資料庫體系結構:[url]
從程式設計師的角度來看為什麼我們需要工作流
每乙個程式設計師,在接觸到工作流的時候,都會有這麼乙個疑問 我用一般的方法可以實現,為什麼還要用工作流?我曾經也問過這個問題,不過現在稍微有點明白了。別著急要答案,看過下面的例子,或許你也就明白一些了。這是乙個簡單的業務 訂貨流程 客戶提交採購訂單 業務員執行訂單處理 如果缺貨,轉工廠生產 倉庫出貨...
從程式設計師的角度來看為什麼我們需要工作流
每乙個程式設計師,在接觸到工作流的時候,都會有這麼乙個疑問 我用一般的方法可以實現,為什麼還要用工作流?我曾經也問過這個問題,不過現在稍微有點明白了。別著急要答案,看過下面的例子,或許你也就明白一些了。這是乙個簡單的業務 訂貨流程 客戶提交採購訂單 業務員執行訂單處理 如果缺貨,轉工廠生產 倉庫出貨...
從程式設計師的角度來看為什麼我們需要工作流
引用 每乙個程式設計師,在接觸到工作流的時候,都會有這麼乙個疑問 我用一般的方法可以實現,為什麼還要用工作流?我曾經也問過這個問題,不過現在稍微有點明白了。別著急要答案,看過下面的例子,或許你也就明白一些了。這是乙個簡單的業務 訂貨流程 客戶提交採購訂單 業務員執行訂單處理 如果缺貨,轉工廠生產 倉...