gpt4 book ai didi

grails - Hibernate session.flush()和grailsObject.save(flush:true)之间在数据库上执行查询的区别

转载 作者:行者123 更新时间:2023-12-02 15:32:42 24 4
gpt4 key购买 nike

在我的项目中,我有很多嵌套的对象,几天后服务器在每次查询执行时都变得非常缓慢。

我从object.save(flush:true)中删除了flush:true,这应该避免对象立即被数据库持久化,因为我不需要对象ID,我认为最好让休眠状态决定何时刷新和 promise 。

但是,即使在此之后,我在数据库中也遇到了一些与死锁相关的问题,但仍收到错误:

    Timeout waiting for idle object. Stacktrace follows:

org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC beg

in failed:

at SecurityFilters$_closure1_closure2_closure4.doCall(SecurityFilters.groovy:13)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at java.lang.Thread.run(Thread.java:662)

Caused by: org.hibernate.TransactionException: JDBC begin failed:

... 4 more

Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool error Timeout waiting for idle object

at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:114)

at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)

... 4 more

Caused by: java.util.NoSuchElementException: Timeout waiting for idle object

at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1167)

at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106)

... 5 more

在深入研究问题之后,有人建议在执行几次之后,我应该手动刷新休眠 session 。

由于我从保存调用中删除了对象刷新,因此我应该
session.flush()
session.clear()

清除休眠 session ,如果是,则这两个方面有什么区别。

最佳答案

看起来您有连接泄漏,或者您需要调整打开的连接的最大数量。这可以在propertiesDataSource.groovy块中进行配置。

但是要回答有关冲洗的问题,没有区别。您不能刷新单个对象-Hibernate刷新所有缓存的更改。 save(flush:true)只是调用save()然后调用session.flush()的便捷方法

关于grails - Hibernate session.flush()和grailsObject.save(flush:true)之间在数据库上执行查询的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16855011/

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