功能優化
從功能設計上,避免一次性加載大量數據。遇到一次性加載大量數據的,通過以下問題尋找功能優化方式:
1. 設置默認查詢條件,僅加載部分數據。如對於監測數據的查詢分析,可默認僅查詢當天或當月的數據;
2. 將數據展示使用類似TAB的元素分開,根據用戶操作,採用AJAX分步加載數據
3. 實時性要求不高的數據,不要實時查詢,可緩存或者放到Session中
代碼調優
SQL優化
1. 儘量使用join,不要使用子查詢
2. 可能的情況下,儘量使用UNION ALL來代替UNION
小竅門:
可使用PL/SQL 或者 SQLServer Management Studio查看SQL的執行計劃,進而對SQL進行優化。
緩存的使用
關於EhCache、Redis的使用,請自行百度。
耗時操作的處理
需求:對某事項進行審批,審批通過後發郵件給提交人。
發郵件即爲一個耗時操作,如果審批通過後,在當前線程中執行發郵件的操作,則會阻塞當前線程,直到郵件發送結束。
經驗分享:
耗時操作可以啓動一個新的線程執行,避免阻塞當前線程(request)。
或者將耗時操作僅僅設置一個未執行的狀態,後臺跑一個QZ任務,定時批量執行。
代碼邏輯調優
1. 避免for 多層嵌套
2. 避免對大數組的迭代對比,考慮使用Arrays.binarySearch()