【问题标题】:Can two different database framework for single application share the same connection object?单个应用程序的两个不同数据库框架可以共享同一个连接对象吗?
【发布时间】:2014-12-12 13:47:42
【问题描述】:

我有一个应用程序,其中 a.jar 使用 jdbc 框架,b.jar 使用 ibatis 框架进行数据库连接,a.jar 上的数据库操作需要 10 分钟才能执行,因为它有很大的行,所以可以b.jar 上的数据库操作也需要时间?

据我所知,两者都有不同的连接对象,但有时我的意思是非常间歇性的这个问题,在 b.jar 上执行查询将导致等待,因为在 a.jar 中执行大量查询会导致整个 jvm 挂起。

所以我的问题是:两个框架是否因为哪些线程挂起而使用相同的连接对象?请帮助我,我们在生产中面临这些问题。

【问题讨论】:

    标签: java database multithreading jdbc ibatis


    【解决方案1】:

    他们可能会共享一个connection pool(这很安全,因为每个应用程序都有自己的实例)。如果您从“a”运行一个长查询,那么来自“b”的查询可能会挂起,直到来自“a”的查询完成,这取决于数据库中的事务isolation level 设置为什么(同样,当您共享一个数据库 - 不是连接 - 您从一个应用程序执行的操作可能会从另一个应用程序获取资源;这似乎已经发生了)。

    【讨论】:

    • 感谢您的回复,应用服务器默认最大连接数为64,所以我们都在不同的连接上,我们对这两个jar的数据库进行独立操作,问题我们会很少看到这个问题,比如一个月一次,我们的线程因为这个长时间运行的查询而挂起,所以我们不知道可能是什么原因,以及挂起间歇性发生的场景是什么。
    • @pankaj 检查隔离级别。您没有提供足够的信息让我们为您调试。
    • 嗨,elliott,我已经从客户那里确认了它的默认设置,你能帮帮我吗。
    猜你喜欢
    • 2011-08-07
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    相关资源
    最近更新 更多