代码之家  ›  专栏  ›  技术社区  ›  Nick

卡桑德拉更新声明

  •  1
  • Nick  · 技术社区  · 6 年前

    UPDATE table_name SET COUNT = COUNT + 1 WHERE ID = ?
    

    尽可能快,例如,如果我发送100-300条记录,其中0-10条将被更新。总记录可能是

    SELECT count(*), min("count"), max("count") FROM table_name;
    -- result 300000 | 1 | 120
    

    我已经测试过了 BatchStatement.Type.UNLOGGED executeAsync . 一般情况下批量按性能取胜2次,但不建议使用,请参阅 CASSANDRA-9283 . 我知道Cassandra用于Insert语句,但可能存在一些适合我的示例的好模式?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Chris Lohfink    6 年前

    计数器更新需要paxos轮和先读后写。这是卡桑德拉最慢的手术。相反,您可能希望执行类似于事件源计数器的操作。有一个 ((count_key, yymmdd) id)