標籤:jps sql最佳化 利用 java.net 記憶體 分組 並且 日誌 並發
常用觀測效能指標
- 處理能力,輸送量、回應時間、並發串連數
- 主機指標,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
都可以看到記憶體泄露等問題。
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;
- 不需要排序、去重、分組的,就不要使用它們。
原創作品,若轉走,請尊重著作權,標註來源,謝謝!
效能最佳化總結【原創】