哪种缓存策略更快,速度快多少?
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池更有效,但差异可以忽略不计。在做出决定之前,我希望看到更多的基准。
发布于 2018-10-10 03:26:13
应用程序级缓存的效率会更高,尤其是当您对这些执行进行批量处理时。
即使使用连接池,每次准备好连接(返回和第四个back)并关闭所需的网络开销不仅会使连接速度变慢,还会增加SQL服务器和客户端服务器上的CPU级别成本。
https://stackoverflow.com/questions/4737717
复制相似问题