首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >缓存每个连接的PreparedStatement,还是让连接池处理它?

缓存每个连接的PreparedStatement,还是让连接池处理它?
EN

Stack Overflow用户
提问于 2011-01-20 00:16:48
回答 1查看 2.6K关注 0票数 5

哪种缓存策略更快,速度快多少?

1) PreparedStatement池化(按连接池)。应用程序没有缓存。

for (int i=0; i<1000; i++) {
    PreparedStatement preparedStatement = connection.prepareStatement(sql);
    preparedStatement.setObject(1, someValue);
    preparedStatement.executeQuery();
    preparedStatement.close();
}

2)应用级缓存。无PreparedStatement池。

PreparedStatement preparedStatement = connection.prepareStatement(sql);
for (int i=0; i<1000; i++) {
    preparedStatement.clearParameters();
    preparedStatement.setObject(1, someValue);
    preparedStatement.executeQuery();
}
preparedStatement.close();

这个问题与Reusing a PreparedStatement multiple times类似,只是我希望得到具体的基准测试结果,并考虑PreparedStatement池。

http://drupal.org/node/550124#comment-2224630似乎表明应用程序级缓存比PreparedStatement池更有效,但差异可以忽略不计。在做出决定之前,我希望看到更多的基准。

EN

回答 1

Stack Overflow用户

发布于 2018-10-10 03:26:13

应用程序级缓存的效率会更高,尤其是当您对这些执行进行批量处理时。

即使使用连接池,每次准备好连接(返回和第四个back)并关闭所需的网络开销不仅会使连接速度变慢,还会增加SQL服务器和客户端服务器上的CPU级别成本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4737717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档