【发布时间】:2014-02-12 01:30:08
【问题描述】:
我读到 MySQL 不支持服务器端查询计划缓存。因此,如果我想使用 PreparedStatements 来获得性能优势,我可以做的是在 JDBC Connection 中启用语句缓存。因此,根据文档,它将启用基于每个连接的准备好的语句的缓存。
与 MySQL 具有服务器端查询计划缓存相比,通过 JDBC 连接进行 PreparedStatement 缓存的性能增益是多少? 那么如果在物理连接的缓存中确实找到了PreparedStatement,是否意味着当它到达mysql服务器时,mysql不会对其进行查询优化,而是可以直接执行它?
在使用 MySQL 作为我的数据库时,我是否应该在 JDBC 连接级别使用语句缓存?我正在使用带有 Mysql JDBC 连接器的 Hikari 数据库连接池。
【问题讨论】:
-
您使用的是什么版本的 MySQL 和 JDBC?
-
@emecas 我使用的是 mysql-connector-java 版本 5.1.18。 MySQL 版本是 5.7,因为我打算在 mysql 5.7 版中使用 mysql 附带的 InnoDB Cache 插件
-
@AnthonyAccioly :感谢您的链接。但是语句缓存仍然是基于每个连接的。它是否比在 JDBC 级别进行语句缓存更好?
-
两者都可以:)。另外,您的连接池将使“每个连接”缓存值得。