2013-05-27 70 views
1

我正在查找有關預處理語句(ps)生命週期的信息。Cassandra使用節儉在CQL3中編寫語句

我使用由Apache提供的BasePoolableObjectFactory來創建連接池。然後,使用TSocket和TTransport,我從Cassadra.Client類中創建一個對象。該對象具有執行cql3查詢的方法。該對象還有方法來準備和執行cql3查詢,即我們可以使用節儉編寫準備好的語句。

準備好的語句存儲在哪裏?在數據庫服務器中還是隻要存在對象就存在?

如果它們存儲在數據庫服務器中,我該如何得到它,而不再創建它們? 如果它們存儲在對象中,那麼當每次將查詢提交給服務器時,準備的是什麼?

我在問,因爲我想知道什麼時候值得做好準備。因爲如果我做了一個準備好的聲明,執行一次並關閉連接,那麼根本就不需要準備好聲明。

+0

其實我找到了一些答案。準備好的語句存儲在服務器中。當我們做PS時,cassandra返回一個id。使用此ID我們可以稍後訪問它。海事組織,我們將能夠通過這個ID從其他地方訪問PS。但是我們如何才能從Cassdra中刪除這個聲明?重新啓動Cassandra服務器是唯一的方法嗎? –

回答

1

準備好的語句被緩存爲每個連接。 (您可以通過準備電話的結果使用服務器提供的身份標識訪問它們)。

因此不,在使用它們進行一次性查詢時沒有意義。這在所有已準備好的陳述設計中都很常見

+0

我檢查了執行速度,並且...當每個連接的查詢超過100時,準備好的語句更快。所以在正常情況下,他們只是比較慢。 –