使用Cassandra的第一个preparedStatement总是很慢

时间:2013-06-23 23:20:21

标签: cassandra

我注意到如果我有一个java方法,我有一个preparedStatement,你可以使用Cassandra附带的JDBC驱动程序,它总是很慢。但是如果我在方法中两次放置相同的查询,那么第二次它会快20倍。这是为什么?我想第二次,第三次,四次我调用java方法它会比第一次快。我正在使用Cassandra 1.2.5。我还在行缓存中缓存了100MB的行,并将表设置为caching =“all”。在Cassandra-cli,我验证了设置。在Cassandra-Cli中,我验证了第二次,第三次第四次从同一个表中获取行,我对JDBC进行了调用,从而获得更快的响应时间。 任何想法?

谢谢, 托尼

1 个答案:

答案 0 :(得分:0)

从所有人都知道CQL3 documentation(总是一个很好的起点btw):

  

Prepared语句是一种优化,它允许仅解析一次查询,但使用不同的具体值多次执行它。

语句被缓存。这是您遇到的差异制造者。预编译语句也是预编译的,通常意味着在针对db运行查询之前准备好执行计划。知道你在做什么使得这个过程更快。

在第一次运行时,如果您再次运行相同的查询,则会缓存预准备语句,并且由于其缓存,查询将以更快的速度执行。