1. 程式人生 > >性能優化總結【原創】

性能優化總結【原創】

數據庫優化 謝謝 尊重 ogr program 兩個 java後臺 編寫 jmap

常用觀測性能指標

  1. 處理能力,吞吐量、響應時間、並發連接數
  2. 主機指標,cpu、內存、硬盤、IO
  3. 數據庫指標,cpu、內存、硬盤、IO、命中率、用戶連接數

JAVA後臺分析問題方法

Java方面主要是從兩方面分析

  1. 線程thread dump:使用jstack
  2. 內存的使用情況:使用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

數據庫優化性能方法

數據庫優化思路

  1. 首先,理解業務和數據表至關重要,往往可以使用一兩張表就可以滿足業務查詢的,就不要使用太多表進行查詢,當業務和表優化後再使用SQL優化來解決性能問題,能解決70%左右的性能問題;
  2. 其次,從SQL直觀找到問題,利用下面總結的SQL編寫規則,來優化單個語句,能解決20%左右的性能問題;
  3. 然後,利用執行計劃找到語句隱藏的問題,能解決10%左右的性能問題。

SQL編寫規則

  1. 如果單表能解決的,盡量使用單表查詢。一定要註意 where 條件,盡量使用有索引的列作為條件。
  2. 如果使用多表關聯查詢,盡量控制在3到4張表以內,並且表關聯條件一定要有,否則會出現笛卡爾積。
  3. 查詢語句中盡量避免子查詢,盡量使用join 代替子查詢。如果使用子查詢,一定要有條件,盡量早過濾。
  4. 查詢語中where條件盡量早過濾,條件下推。
  5. 禁止隱士轉換,數值類型禁止加引號,字符串類型必須加引號。
  6. 盡量使用 union all/union 來代替 or。
  7. 盡量用 union all 代替 union。
  8. 禁止使用 select * 。
  9. 全模糊查詢無法使用 index,應該盡量避免。比如 like ‘%ss%‘。
  10. select for update 語法,盡量避免。
  11. select id,name from t1 limit 10000,10 可以改成 select id,name from t1 where id>=10000 limit 10;
  12. 不需要排序、去重、分組的,就不要使用它們。

原創作品,若轉走,請尊重版權,標註來源,謝謝!

性能優化總結【原創】