java mysql 缓存_java – 如何使用MySQL编写的语句缓存?

本文探讨了如何利用MySQL的预准备语句缓存功能提高性能。通过Java示例展示了设置`cachePrepStmts=true`参数对减少数据库交互的影响。尽管预期设置能减少Prepare命令的数量,但在某些情况下效果不明显。同时,文章提到了Spring和Hibernate在处理预准备语句上的不同行为,并询问如何在纯JDBC中实现类似优化。
摘要由CSDN通过智能技术生成

我如何利用

MySQL的缓存预准备语句的能力?

使用预准备语句的一个原因是,如果要再次使用相同的预准备语句,则无需多次发送预准备语句本身.

Class.forName("com.mysql.jdbc.Driver");

Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb" +

"?cachePrepStmts=true", "user", "pass");

for (int i = 0; i < 5; i++) {

PreparedStatement ps = conn.prepareStatement("select * from MYTABLE where id=?");

ps.setInt(1, 1);

ps.execute();

}

conn.close()

运行上面的Java示例时,我在mysqld日志文件中看到了5对Prepare和Execute命令.将ps赋值移到循环之外会导致单个Prepare和5 Execute命令.连接参数“cachePrepStmts = true”似乎没有任何区别.

使用Spring和Hibernate运行类似程序时,发送的Prepare命令数(1或5)取决于是否启用了cachePrepStmts连接参数. Hibernate如何执行预准备语句以利用cachePrepStmts设置?是否有可能使用纯JDBC模仿这个?

我在MySQL Server 4.1.22和mysql-connector-java-5.0.4.jar上运行它

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值