我正在使用例如c3p0與一些已定義的「maxStatements」進行preparedStatement緩存。 這個緩存究竟做了什麼?它緩存什麼樣的數據。在什麼級別(db,application,..)? 從例子中可以很好地理解它。例如,我有一個查詢PreparedStatement緩存 - 它是什麼意思(它是如何工作的)
select * from sometable wherecolumn =?
現在我將它發送到未緩存的準備好的語句中。 現在我發送它,它被緩存。 有什麼區別。第一種情況和第二種情況發生了什麼?在第一種情況下和第二種情況下發送到數據庫服務器的是什麼?
謝謝。
有什麼經驗法則嗎?我的應用程序按順序執行大約100個不同的sqls,因此我猜測用PreparedStatement池等於50的命中率將爲0(LRU?)。 – j23
要做的最簡單的事情就是使用'maxStatementsPerConnection'並將其設置爲您的應用程序經常使用的PreparedStatements的數量。 (即忽略用於應用程序初始化的語句,或者更少用於管理目的的語句等),如果您的應用程序始終順序執行100個不同的PreparedStatements,那麼當然,請嘗試將'maxStatementsPerConnection'設置爲100,但存在風險那個內存和資源佔用將超過任何好處,你會變得更好。你必須看到。 –