一尘不染

休眠性能

hibernate

我有问题,也许有人认为它很愚蠢。Hibernate快吗?我在系统中使用它,对数据库的查询非常多。并且性能变得警觉。和其他问题脱离当前背景。有什么更好的选择-
许多简单查询(使用单个表)还是较少一些查询的查询?

先进的坦克的Artem


阅读 251

收藏
2020-06-20

共1个答案

一尘不染

首先,您可以做很多事情来加快Hibernate的速度。查阅这些高性能hibernate技巧文章,以全面了解可以采取哪些措施来加快数据访问层的速度。

使用“许多”查询,您将遇到典型的N + 1查询问题。您可以使用具有相关对象的Hibernate加载实体。使用LAZY联接,您将对每个记录都得到一个查询。每个查询都通过网络到达数据库服务器,并返回数据。这都需要时间(打开连接,网络延迟,查找,数据吞吐量等)。

对于单个查询(具有联接),查找和数据吞吐量大于多个查询。但是您只能一次打开连接和网络延迟。因此,使用100个或更多查询时,您的查询和数据吞吐量较小,但您将获得100倍的查询次数(包括打开连接和网络延迟)。

单个查询需要20毫秒。vs 100条查询需要1毫秒。?你做数学;)

并且如果可以增长到1000条记录。单个查询对性能的影响很小,但是1000个查询与100个查询的关系是10倍。因此,使用多个查询,您将大大降低性能。

使用HQL查询检索数据时,可以将FETCH添加到JOIN,以便使用相同的查询加载数据(使用JOIN的查询)。

有关与此主题相关的更多信息,请查看此Hibernate Performance
Tuning

Tutorial。

2020-06-20