性能優化總結【原創】
阿新 • • 發佈:2018-10-28
數據庫優化 謝謝 尊重 ogr program 兩個 java後臺 編寫 jmap
常用觀測性能指標
- 處理能力,吞吐量、響應時間、並發連接數
- 主機指標,cpu、內存、硬盤、IO
- 數據庫指標,cpu、內存、硬盤、IO、命中率、用戶連接數
JAVA後臺分析問題方法
Java方面主要是從兩方面分析
- 線程thread dump:使用jstack
- 內存的使用情況:使用jmap ,在用著兩個命令之前,先用jps把pid查出來:) jmap -dump:format=b,file=<file> <pid> 然後用visualvm工具打開
JAVA後臺性能分析工具
- 下載Jprofile,比較消耗資源
- JAVA MAT:MemoryAnalyzer(MAT)
- 推薦JDK自帶的工具
C:\Program Files\Java\jdk1.6.0_34\bin目錄下
jvisualvm.exe
jconsole.exe
都可以看到內存泄露等問題。
- 推薦查看dump日誌,用mat解析內存泄露
jps 獲取 pid
jmap -dump:live,format=b,file=heap.bin <pid>
使用MAT分析工具
http://www.blogjava.net/rosen/archive/2010/06/13/323522.html
數據庫優化性能方法
數據庫優化思路
- 首先,理解業務和數據表至關重要,往往可以使用一兩張表就可以滿足業務查詢的,就不要使用太多表進行查詢,當業務和表優化後再使用SQL優化來解決性能問題,能解決70%左右的性能問題;
- 其次,從SQL直觀找到問題,利用下面總結的SQL編寫規則,來優化單個語句,能解決20%左右的性能問題;
- 然後,利用執行計劃找到語句隱藏的問題,能解決10%左右的性能問題。
SQL編寫規則
- 如果單表能解決的,盡量使用單表查詢。一定要註意 where 條件,盡量使用有索引的列作為條件。
- 如果使用多表關聯查詢,盡量控制在3到4張表以內,並且表關聯條件一定要有,否則會出現笛卡爾積。
- 查詢語句中盡量避免子查詢,盡量使用join 代替子查詢。如果使用子查詢,一定要有條件,盡量早過濾。
- 查詢語中where條件盡量早過濾,條件下推。
- 禁止隱士轉換,數值類型禁止加引號,字符串類型必須加引號。
- 盡量使用 union all/union 來代替 or。
- 盡量用 union all 代替 union。
- 禁止使用 select * 。
- 全模糊查詢無法使用 index,應該盡量避免。比如 like ‘%ss%‘。
- select for update 語法,盡量避免。
- select id,name from t1 limit 10000,10 可以改成 select id,name from t1 where id>=10000 limit 10;
- 不需要排序、去重、分組的,就不要使用它們。
原創作品,若轉走,請尊重版權,標註來源,謝謝!
性能優化總結【原創】