【问题标题】:PreparedStatement caching in TomcatTomcat 中的 PreparedStatement 缓存
【发布时间】:2009-06-03 13:22:47
【问题描述】:

我正在寻找一种方法来实现 PreparedStatement 缓存,以便为过去已经执行的查询节省重新创建 PreparedStatement 对象。

是否有一些内置方法可以使用 Tomcat 实现这一目标?还是我必须自己编程这个缓存?

【问题讨论】:

    标签: java tomcat caching prepared-statement


    【解决方案1】:

    我相信 tomcat 使用 commons-dbcp 并且 commons-dbcp 支持准备好的语句池。

    查看here

    poolPreparedStatements false 为此池启用准备好的语句池。

    【讨论】:

    【解决方案2】:

    准备好的语句缓存由 JDBC 连接池或 JDBC 驱动程序完成,不是由 Tomcat 完成。

    【讨论】:

    【解决方案3】:

    您没有说明您的数据库,但如果它是 SQL Server,则 jTDS 驱动程序会在内部为您执行此操作。这一切都被抽象出来了,所以你不需要编写任何毛茸茸的缓存代码。

    请看这里:http://jtds.sourceforge.net/faq.html#preparedStatmentMemoryLeak

    【讨论】:

      【解决方案4】:

      DB2 JDBC 驱动程序 (JCC) 使用 JDBC 连接属性,例如 maxStatements=10;它确实缓存了连接的语句。池不需要缓存它们。

      【讨论】:

        【解决方案5】:

        也许我在你所问的内容中遗漏了一些东西,但如果你在“原始”JDBC 中进行查询,那么基本上你需要做的就是保持连接打开并继续引用PreparedStatement。

        【讨论】:

        • 这是一个关于Tomcat的问题。所以我看不出连接如何在请求之间保持打开和可引用,除非您自己管理连接池。
        猜你喜欢
        • 2012-01-12
        • 1970-01-01
        • 2020-06-05
        • 2016-10-30
        • 1970-01-01
        • 2021-11-03
        • 2011-04-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多