我讀到來自谷歌「語句高速緩存」和維基,但我無法理解數據庫「語句高速緩存」,根據谷歌「語句緩存」的意思是: -這是什麼意思「語句緩存」?
數據庫被調整到do語句緩存。它們通常包含一些 種語句緩存。該緩存使用該語句本身作爲密鑰 ,並將訪問計劃與相應的 語句一起存儲在緩存中。這允許數據庫引擎重用以前執行的 語句的計劃。例如,如果我們向數據庫發送了 數據庫,例如「select a,b from t where c = 2」,然後 ,則會計算出的訪問計劃被緩存。如果我們稍後發送相同的語句 ,數據庫可以重用先前的訪問計劃,從而節省我們的CPU功耗。但請注意,整個陳述是關鍵。例如,如果我們稍後發送語句「select a,b from t where c = 3」,它將找不到訪問計劃。這是因爲「c = 3」是 不同於緩存的計劃「c = 2」。因此,舉例來說:
For(int I = 0; I < 1000; ++I)
{
PreparedStatement ps = conn.prepareStatement("select a,b from t where c = " + I);
ResultSet rs = Ps.executeQuery();
Rs.close();
Ps.close();
}
這裏將不使用緩存。循環的每次迭代都會向數據庫發送一個不同的SQL語句 。對於每次迭代,計算新的訪問計劃爲 ,我們基本上使用 這種方法拋出CPU週期。然而,看下面的代碼片段:PreparedStatement ps = conn.prepareStatement(「select a,b from t where c =?」);
For(int I = 0; I < 1000; ++I) {
ps.setInt(1, I);
ResultSet rs = ps.executeQuery();
Rs.close(); }
ps.close();這樣會更有效率。聲明發送到 數據庫使用'?'參數化標記在sql中。這個 意味着每一次迭代都發送相同的語句到數據庫 用「c =?」的不同參數部分。這允許數據庫 重複使用語句的訪問計劃,並使程序 在數據庫內更有效地執行。這基本上讓我們 您的應用程序運行速度更快,或使更多的CPU可用數據庫的用戶 。
但我不明白這個代碼有人給我任何想法上面這一行。
http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html對它進行了很好的解釋。 –
你不明白什麼?請提出具體問題,我會盡量回答。但是,如果我發表一個長時間的解釋,你可能會說「我也不明白這一點」;我的時間將會被浪費。因此,請再次嘗試閱讀並理解該鏈接,並思考我需要回答什麼問題才能幫助您理解。 –