在項目中,我們都經常面臨所開發的產品性能問題。然而這些問題都不是很容易解決。大多性能問題追根究底都是系統架構或者說是設計問題。推翻了重做是不可能的,怎么從這些問題中吸取經驗教訓才是正道。來看看我遇到的設計問題。
案例: 企業級應用系統,技術使用了JSF 數據庫Oracle. 主頁面范圍超慢,大概半分鐘。
問題很多,主要有一下幾點:
1. 數據庫設計嚴格遵守了范式設計,導致表關聯很多。頁面數據大多需要從至少10張表聯合獲取。
2. 重度使用JSF 組件樹過大。
3. 代碼上冗余邏輯,大量沒有必要的處理。
如何解決呢
1. 對于第一個問題, 還是多學習學習數據庫設計以及如何寫出高效的SQL,推薦一本書 SQL反模式 可以指導如何進行數據庫設計。畢竟大多數應用系統需要數據庫的支持。寫SQL同時想想是不是這個SQL是最優的。 資深的程序員應該對SQL優化有一定的了解。
2. 在設計開發應用系統初期,就要多了解你選技術的不足,盡量避免由技術不足帶了的問題。畢竟任何技術都有其優勢和不足。 比如問題2,盡量減少組件樹,或者使用facelet來build UI .
3. 問題3就純粹是程序員個人問題和團隊流程問題了。 無論是用任何方式 比如測試驅動 結對編程等 流程畢竟是流程,程序員的個人素質與修養是整個產品質量的保證。 這點我還是相信找到合適的程序員讓他喜歡或者對自己開發的產品有認同感才是最好的解決方式。如果連自己做的都不感興趣,就靠流程,也是僅僅保證少許問題而不是高質量的產品。
以上就是我的一點看法。welcome to other idea . Thanks
2012/11/20 Beijing