[英]Prepared Statement and Statement/Query Caching
我試圖了解在參數化准備好的語句的情況下,語句緩存是否有用。
根據我的理解
我正在使用JDBC / Snaq數據庫池/ MySQL數據庫。
此處的語句緩存涉及兩種不同的情況:
我的困惑很簡單:
希望我澄清我的問題。
JDBC
查詢緩存是在事物的數據庫端完成的,它緩存execution plan
,而參數的值無關緊要,只是每次它們的順序相同。 如果這些值實際上很重要,則緩存任何內容都是沒有意義的。
很久以前,您必須使用PreparedStatements
來緩存執行計划,但是自2005年至2008年以來,所有現代數據庫都值得一提的是緩存執行計划,無論執行的語句類型如何。
實際Java對象有一些最小的客戶端緩存,它們表示PreparedStatement
或CallableStatement
但是在現代JDBC
驅動程序中,任何實際的時間或空間節省都將是最小的。
在服務器端計算execution plan
的開銷比在客戶端進行簡單的String
操作要大幾個數量級。 這意味着使用PreparedStatement
在客戶端沒有任何有意義的性能優勢,還有其他更重要的優勢,例如SQL Injection
Protection可以證明使用它是合理的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.