0

我注意到如果我有一个 java 方法,其中我有一个 prepareStatement 使用 Cassandra 附带的 JDBC 驱动程序,它总是很慢。但是,如果我第二次在方法中两次输入相同的查询,它的速度会快 20 倍。这是为什么?我认为第二、第三、四次调用 java 方法会比第一次更快。我正在使用 Cassandra 1.2.5。我还在行缓存中缓存了 100MB 的行,并将表设置为缓存 =“全部”。在 Cassandra-cli 中,我验证了设置。在 Cassandra-Cli 中,我验证了第二次、第三次和第四次从同一个表中获取行时,我执行 JDBC 调用以得到更快的响应时间。有任何想法吗?

谢谢,-托尼

4

1 回答 1

0

从众所周知的CQL3 文档(总是一个很好的起点顺便说一句):

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

该语句被缓存。这是您正在经历的差异制造者。准备好的语句也会被预编译,这通常意味着在对数据库运行查询之前准备好执行计划。知道你在做什么可以加快这个过程。

在第一次运行时,您准备好的语句被缓存,以防您再次运行相同的查询,您这样做,并且由于它被缓存,查询将执行得更快。

于 2013-06-24T08:52:49.247 回答