哪种缓存策略更快,速度更快?
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池更有效,但差异可以忽略不计。我想在做出决定之前看到更多的基准测试。
答案 0 :(得分:0)
应用程序级缓存将更加有效,特别是如果您批处理那些执行。
即使使用连接池,每次准备好连接(后座和第四个后座)并关闭时所花费的网络开销也不仅使其变慢,而且增加了SQL Server和客户端服务器上的CPU级别成本