哪種緩存策略速度更快,速度更快?每個連接緩存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