gpt4 book ai didi

java - 使用 Hibernate 调用 MySQL 存储过程时的性能问题

转载 作者:行者123 更新时间:2023-11-29 17:33:07 25 4
gpt4 key购买 nike

我试图理解为什么当我使用 Hibernate 从 Java 运行存储过程时,其执行时间比直接在 MySQL 中运行它时要长得多。

存储过程本身负责将20000行从表A移动到表B,然后在表A中删除它们。

在 MySQL 中运行存储过程大约需要 18 秒。

在 Java 中,我使用 Hibernate 并创建一个查询:

Query query =
mainSession
.createSQLQuery("{CALL my_stored_procedure(:maxResultSize)}")
.setParameter("maxResultSize", maxResultSize);

然后执行查询并刷新并清除 session :

List<BigInteger> rows = query.list();
mainSession.flush();
mainSession.clear();

这大约需要 248 秒。

有谁知道为什么使用 Hibernate 从 Java 调用存储过程要花这么多时间?

我应该采取什么方法来提高性能?

最佳答案

请尝试使用 native 查询,它对我来说更快并且运行良好。

List<Object[]> query = (List<Object[]>) mySessionFactory.getCurrentSession()
.createNativeQuery("{CALL my_stored_procedure(:maxResultSize)}")
.setParameter("maxResultSize", maxResultSize).getResultList();

关于java - 使用 Hibernate 调用 MySQL 存储过程时的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50488672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com