本文主要是介绍服务器performance优化总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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
这篇关于服务器performance优化总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!