哪种缓存策略速度更快,速度更快?每个连接缓存PreparedStatement还是让连接池处理它?
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池更有效,但差异可以忽略不计。我想在下定决心之前看到更多的基准。
我想了解是否值得在框架中引入应用程序级缓存。这会影响用户群,因此针对特定用例进行优化并不会真正起到帮助作用。是否有一些我们可以修改的备受尊敬的数据库基准测试? – Gili 2011-01-19 16:42:22
那么,有没有用户请求这个功能?如果没有,那么也许没有人需要它,你可以节省一些努力,而不是实现一个可能做得不多的新功能......只是一个念头! – time4tea 2011-01-19 19:44:22