Cassandra - 如何重新修改键空间和表格?获得警告 - 重新准备已经准备好的查询通常是一种反模式

时间:2018-04-11 12:40:25

标签: cassandra datastax cassandra-3.0 datastax-java-driver

获得警告:

重新准备已准备好的查询通常是一种反模式,可能会影响性能。考虑只准备一次声明。

我看到了类似Datastax: Re-preparing already prepared query warning之类的各种类似问题但他们没有解决重新分配查询使用的密钥空间或表的问题。

我通常可以重复使用查询,但它需要按键空间和表格进行缓存,而我不想管理状态。或者,我可以在执行查询之前重新绑定键空间和表(然后不需要重新创建):

//我正在使用的插入查询

def insertQuery(keyspace: String, table: String): Insert = QueryBuilder.insertInto(keyspace, table)
    .value("c1", QueryBuilder.bindMarker())
    .value("c2")
    .value(...)
    .value("c_n")

需要这样的东西:

QueryBuilder.insertInto(keyspace = ???BIND MARKER????, table = ???BIND MARKER???)

1 个答案:

答案 0 :(得分:1)

你无法绑定密钥空间&表名......

如果您不想缓存准备好的查询,那么您实际上不需要使用它们 - 只需生成SimpleStatement - 它会更有效,因为如果您准备好每个请求,那么正在进行2次网络往返 - 一次用于准备查询,另一次用于执行。

但我建议在启动/第一次连接时准备所有必要的查询,因为它们可以带来非常显着的性能提升(当然,如果你在意的话)。