2013-06-05 55 views
5

當我們創建一個PreparedStatement對象時,它是否緩存在服務器端?與Oracle驅動程序中的PreparedStatement相比,它有什麼不同?如果準備好的語句被重用,哪些數據被髮送到Cassandra服務器,參數值只?Datastax PreparedStatements如何工作

據我所知,java驅動程序中的一個Session對象擁有多個連接到羣集中的多個節點。如果我們在多線程應用程序中重複使用相同的準備好的語句,將會使我們只使用一個連接到一個Cassandra?我猜準備語句只在一個連接上完成......每次執行調用更新路由鍵時會發生什麼?

使用預處理語句的好處是什麼?

謝謝

回答

6

是的,只有聲明ID和參數需要準備語句後發送。

驅動程序跟蹤其連接池中每個服務器的語句ID;它對你的應用程序是透明的。

由於無需爲每個查詢重新編譯語句,益處在於提高了性能。

+1

如果連接丟失(或會話關閉不知何故),並重新連接後......這些準備好的陳述會用於新的會話? – pinkpanther

+0

是的,它們將被重新編譯。 – Tvaroh