性能优化总结【原创】

常用观测性能指标

  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. 不需要排序、去重、分组的,就不要使用它们。

          

 原创作品,若转走,请尊重版权,标注来源,谢谢!

posted @ 2018-10-28 17:54  小程序猿86  阅读(139)  评论(0编辑  收藏  举报