2014-10-09 48 views
1

我不完全舒服我得到准备好的声明的概念正确,但根据python driver docs准备好的声明是"A statement that has been prepared against at least one Cassandra node"。对我来说,读取集群中的某个地方有关于哪些查询已经准备好的信息。documentation还指出"A PreparedStatement should be prepared only once. Re-preparing a statement may affect performance (as the operation requires a network roundtrip)."接收已经准备好的声明来自卡桑德拉

如果我理解正确,从集群接收已经准备好的语句而不是反复重新生成它们会是有益的(1)。有没有办法做到这一点?如果是的话,我如何才能收到我感兴趣的陈述? (1)我不是在谈论一个程序的一个实例的范围,而是没有共享内存的多个实例执行相同的查询。

回答

1

你是对的:集群中的每个节点都缓存准备好的语句。但是,在客户端没有获取已经准备好的语句的机制。这里有很多原因,我不会在这里解释。

您的应用程序只需编写一次声明,并在群集/会话的整个生命周期内保留它。这些驱动程序处理诸如在所有节点上准备语句以及在由于缓存逐出或重新启动而丢失它们的节点上重新准备。

+0

我这么认为,但感谢您的确认。你知道cassandra实际上是再次准备语句还是忽略这个尝试,但是返回一个有效的预备语句对象?如果准备好的语句的缓存应该保持最小,这将是我期望发生的行为。 – 2014-10-09 20:11:55