Java中的性能反模式| N+1问题

  随着应用程序(以及用于构建它们的工具)变得越来越复杂,并且数据需求变得越来越大,开发团队开发出能够在基线和规模上高效执行的应用程序至关重要。但是实现这个目标有很多障碍:像 N+1 问题这样的性能反模式可能会减慢或破坏最好的应用程序。

  在本文中,我们将探讨 N+1 问题、Java 中 N+1 问题背后的常见原因。

  Java 中的性能反模式

  性能反模式通常围绕着在负载或规模上复合的低效或多余查询。出现这些模式的原因多种多样,但最终结果可能从性能差到级联故障。

  我们今天看到的反模式称为 N+1 问题。它以对数据库的一系列过度请求为标志,并经常伴随对象关系映射 (ORM) 工具。

  什么是 N+1 问题?

  N+1 问题,也称为 N+1 选择问题或 N+1 查询,发生在服务从数据库请求多行 (N) 数据,然后单独请求这些项目的相关数据 N 次时。

  在下面分布式 Spring PetClinic 演示应用程序的示例中,我们看到 vet.specialties 方法从数据库中请求 24 行,然后循环并通过单独的查询从数据库中请求 24 行。

  那是 24 次调用,加上对数据库本身的 24 行数据的初始调用——或者,简而言之,N + 1 次调用。 当然,这些单独的行调用可以通过单个调用来完成。

 

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值