【问题标题】:Cassandra - how to rebind the keyspace and table? getting warning - Re-preparing already prepared query is generally an anti-patternCassandra - 如何重新绑定键空间和表?收到警告 - 重新准备已经准备好的查询通常是一种反模式
【发布时间】:2018-09-21 08:39:17
【问题描述】:

收到警告:

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

我看到了类似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???)

【问题讨论】:

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


    【解决方案1】:

    您不能绑定键空间和表名...

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

    但我建议在启动/首次连接时准备所有必要的查询,因为它们可以带来相当大的性能提升(当然,如果你关心的话)。

    【讨论】:

    • 在程序中使用一些缓存来保存已经准备好的语句...
    猜你喜欢
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    • 2020-11-08
    • 2015-08-27
    • 2012-08-11
    • 2018-12-14
    相关资源
    最近更新 更多