使用MySQL在Tomcat上汇集PreparedStatement

yka*_*ich 5 java mysql tomcat jdbc apache-commons-dbcp

将Tomcat与MySQL一起使用时,Tomcat DataSource配置(我相信来自DBCP)和Connector/J cachePrepStmts设置中的poolPreparedStatements设置之间的关系是什么?什么是最佳配置?

小智 5

poolPreparedStatements 是 Tomcat JDBC 连接池的设置,cachePrepStmts 是 Connector/J 的设置,用于告诉 MySQL 缓存准备好的语句。两种完全不同的东西。cachePrepStmts 是针对每个连接的设置,但 Connector/J 并不关心它是连接到数据库连接池还是直接连接到 MySQL,但 cachePrepStmts 在持久连接(例如连接池)方面效果最佳。将cachePrepStmts 与连接池一起使用是最佳配置。在 Tomcat 中使用 poolPreparedStatements 会打开一罐内存管理蠕虫(查看 Tomcat 文档了解此设置,您就会看到)。实际上,最好让 MySQL 缓存准备好的语句并让 Tomcat 池化连接,而不是试图让一个人做另一个人的工作。

  • 不,MySQL 在缓存准备好的语句方面会比 DBCP 做得更好,因此在 Connector/J 连接中设置 cachePrepStmts 标志,并单独保留 DBCP 准备语句池。Connector/J 直接连接到 MySQL,DBCP 汇集了一堆 Connector/J 连接。我想你引用的我的评论是乱码和令人困惑的。 (2认同)