服务器performance优化总结

21 篇文章 0 订阅

Sql查询优化经验总结

本文的总结经验大多基于postgres数据库

避免使用lower函数

直接写sql的话,lower函数比较容易可以意识到。

在使用java的一些orm 查询框架的时候,有一些语法会自动带入lower函数,例如

equalsIgnoreCase()

对于这样的method我们需要尽量避免,将它替换为equals()

查询时默认不返回count

spring jpa的repository查询会默认执行count计算,框架提供了下面的写法来吧count计算禁用掉:

getUserWithoutCount();

详情参考文档:

https://docs.spring.io/spring-data/data-jpa/docs/current/reference/html/#repositories.special-parameters

创建正确得index

1.order by后面跟的多个条件需要建立联合索引,否则不会进行index scan.

根据sql调整index:

order by creation_date desc, id asc limit 10, you need to create index (creation_date desc, id asc).

order by creation_date asc, id desc", you need to create index (creation_date asc, id desc),

此外,即便建立了所以,数据库也不一定就会进行index scan,例如当数据量比较小时,数据库可能会采取table scan,因为数据量小的时候table scan的速度甚至会更快。

Index数据量是数据量的数倍

在项目上发现的现象,对表建的index的数量,比数据本身多出了很多倍。如下图所示:

 几乎每一张表的index都比data的size更大,第一张表甚至是第一张表的两倍以上。

root cause:

todo

Rabbitmq等消息中间件相关

message不被消耗,卡在queue里

todo: rabbitmq rateditem listener

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值