優化資料庫的合理順序

wei-xh發表於2013-05-21
資料庫效能差,需要優化

你發現
磁碟IO非常忙,看到的IOWAIT比較大
好吧,買硬碟,提升IOPS
確實提升了效能,30%
 
又發現
記憶體命中率比較低
OK,加大記憶體
確實提升了效能,30%
 
又發現
記憶體大了後,邏輯讀太多,導致CPU比較忙,接近100%
OK,加大CPU
確實提升了效能 20%
 
又發現,幾個SQL的索引建立有問題
優化SQL,調整索引
提升了500%
 
某天,跟應用方聊天發現,這幾個SQL可以不要,應用升級後去掉。。。。。。。
 
優化資料庫問題的方法論,一般應該從架構的最上級開始,然後往下
應用 資料庫 主機 儲存
如果這個順序顛倒過來,就會非常容易搞錯哪個是因哪個是果
如果一開始選擇的是優化SQL,那麼可能前面的東西都不用做了
一般正常的步驟應該是:
優化應用,比如減少某些不必要SQL的執行,合併查詢等
優化資料庫,比如調整SQL,優化索引等
優化主機,增大記憶體,增加CPU
優化儲存,增加磁碟,重新平衡資料分佈
在上層確實優化已經做到位,不能再優化的情況下,再考慮下層優化,這樣基本能確保優化方向的正確性。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-761662/,如需轉載,請註明出處,否則將追究法律責任。

相關文章