java程序性能优化(1)-Mysql性能调优

Java程序性能优化一般会从如下几方面进行:

  • MySQL调优
  • Tomcat调优
  • JVM调优

MySQL调优
1.索引
一般区分度在80%以上的时候就可以建立索引,区分度可以使用 count(distinct(列名))/count(*) 来计算。

前缀索引,就是用列的前缀代替整个列作为索引 key,当前缀长度合适时,可以做到既使得前缀索引的区分度接近全列索引,同时因为索引 key 变短而减少了索引文件的大小和维护开销,可以使用 count(distinct left(列名, 索引长度))/count(*) 来计算前缀索引的区分度。

SELEC * FROM employees.employees WHERE first_name=‘Eric’ AND last_name=‘Anido’;
可以建立索引:(firstname, lastname(4))

业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引。
如果明确知道只有一条结果返回,limit 1 能够提高效率。
select * from user where login_name=? limit 1

.SQL 性能优化 explain 中的 type:至少要达到 range 级别,要求是 ref 级别,如果可以是 consts 最好。

  • consts:单表中最多只有一个匹配行(主键或者唯一索引),在优化阶段即可读取到数据。
  • ref:使用普通的索引(Normal Index)。
  • range:对索引进行范围检索。
  • 当 type=index 时,索引物理文件全扫,速度非常慢。

2、查询的基本原则

  • 永远用小结果集驱动大结果集(很多研发不会注重这些,都是习惯性的 left join),做 join 查询时,驱动表,一定是条件限定后记录较少的表
  • 只查询需要的列(研发人员早起可能为了项目大多是 select _,后期优化必须关注)
  • 仅仅使用最有效的过滤条件
  • 尽量避免复杂的 join 和子查询
  • 尽量在索引列上完成排序和查询
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值