Java 使用MySQL在Tomcat上共享PreparedStatement

Java 使用MySQL在Tomcat上共享PreparedStatement,java,mysql,tomcat,jdbc,apache-commons-dbcp,Java,Mysql,Tomcat,Jdbc,Apache Commons Dbcp,将Tomcat与MySQL结合使用时,Tomcat数据源配置中的poolPreparedStatements设置(我相信来自DBCP)与Connector/J设置之间的关系是什么?什么是最佳配置?poolPreparedStatements是Tomcat JDBC连接池的设置,CachePrepsMTS是Connector/J告诉MySQL缓存准备好的语句的设置。两件完全不同的事情。cachePrepStmts是一种每连接设置,但是Connector/J并不关心它是连接到数据库连接池还是直接连接

将Tomcat与MySQL结合使用时,Tomcat数据源配置中的poolPreparedStatements设置(我相信来自DBCP)与Connector/J设置之间的关系是什么?什么是最佳配置?

poolPreparedStatements是Tomcat JDBC连接池的设置,CachePrepsMTS是Connector/J告诉MySQL缓存准备好的语句的设置。两件完全不同的事情。cachePrepStmts是一种每连接设置,但是Connector/J并不关心它是连接到数据库连接池还是直接连接到MySQL,但是cachePrepStmts在持久连接(例如连接池)中工作得最好。将CachePrepsMTS与连接池一起使用是最佳配置。在Tomcat中使用poolPreparedStatements可以打开一罐内存管理蠕虫(查看Tomcat文档了解此设置,您将看到)。实际上,最好让MySQL缓存准备好的语句,让Tomcat共享连接,而不是让一个做另一个的工作。

所以,您建议Connector/J在共享准备好的语句方面比DBCP做得更好,对吗?此外,我发现这一点令人困惑:“Connector/J本身并不关心它是连接到数据库连接池还是直接连接到MySQL”。Connector/J的级别比DBCP低,所以它总是直接连接到MySQL,对吗?不,MySQL在缓存准备好的语句方面比DBCP做得更好,所以在Connector/J连接中设置CachePrepstTS标志,不要使用DBCP prep语句池。Connector/J直接连接到MySQL,DBCP池中有一组Connector/J连接。我猜你引用的我的评论是混乱的。