2013-06-23 59 views
0

我注意到如果我有一個java方法,在這個方法中,我有一個用Cassandra附帶的JDBC驅動程序的preparedStatement,它總是很慢。但是如果我在方法中第二次使用相同的查詢兩次,則速度提高了20倍。這是爲什麼?我會認爲第二,第三,第四次調用java方法,它會比第一個更快。我正在使用Cassandra 1.2.5。我還在行緩存中緩存了100MB行,並將表設置爲緩存=「全部」。在Cassandra-cli中,我驗證了這些設置。在Cassandra-Cli中,我驗證了第二次,第四次從同一個表中獲得行時,我進行了JDBC調用,獲得了更快的響應時間。 任何想法?使用Cassandra的第一個準備陳述總是很慢

感謝, 託尼

回答

0

從全知CQL3 documentation(總是一個很好的起點BTW):

預處理語句是允許解析查詢只有一次,但執行它多重優化具有不同具體價值的時代。

聲明被緩存。這是你正在經歷的差異製造者。準備好的語句也會被預編譯,通常意味着在針對數據庫運行查詢之前準備好執行計劃。瞭解你在做什麼使得這個過程更快。

在你準備好的聲明中,緩存的情況下在第一次運行再次運行相同的查詢,你做的,因爲它的緩存查詢將更快執行。

相關問題