【问题标题】:Are PreparedStatements cached by CQL string? Does Datastax PreparedStatement retain statement ID?PreparedStatements 是否由 CQL 字符串缓存? Datastax PreparedStatement 是否保留语句 ID?
【发布时间】:2014-01-31 16:08:19
【问题描述】:

服务器端和客户端的语句缓存是严格按照 PreparedStatement 的字符串呈现方式缓存的,还是其他的?换句话说,如果两个不同的 PreparedStatement 是通过不同的方式创建的,但最终具有完全相同的 CQL 文本呈现,它们是否都必须准备好(假设相同的服务器)?如果他们来自不同的客户?

更不重要的是......在什么情况下客户端能够在不咨询服务器的情况下将 PreparedStatement 转换为语句 ID?

(我来自 Oracle 经验,如果有帮助的话。)

【问题讨论】:

    标签: cassandra prepared-statement cassandra-2.0


    【解决方案1】:

    如果两个不同的 PreparedStatement 是通过不同的方式创建的, 但最终会得到完全相同的 CQL 文本渲染,他们会吗? 两者都必须准备好(假设同一台服务器)?如果他们来自 不同的客户?

    从不同的客户端执行相同的语句
    刚刚对此进行了测试,两个客户端两次执行相同的预处理语句,o.a.c.cql3.QueryProcessor#preparedStatements 中的 cql 语句缓存最终存储了 2 条语句,即使它们的字符串呈现相同,这意味着缓存了不同客户端的 PreparedStatements。

    从同一个客户端执行同一个语句
    来自单个客户端的重复语句不会被缓存两次,因此它们可以被重用并且不必重新编译,当客户端执行相同的准备好的语句时,它只发送语句 id 和参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-27
      • 1970-01-01
      • 2012-01-12
      • 2020-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多