有没有办法找出cassandra中的insert/update命令导致创建新行或更新旧行的原因?
我之所以问这个问题是因为我们想保持表中行数的计数。谢谢!
wrrgggsh1#
您可以在执行更新/插入之前查询cassandra。如果查询指示存在一行,您就知道这将是一个更新而不是插入。
5f0d552i2#
从根本上讲,如果不牺牲大量性能,您就无法做到这一点,因为这样会破坏存储引擎的日志结构特性,而且您需要锁定以避免与其他客户机的竞争。如果你能做得很好,Cassandra会开箱即用!因此,“正确”的解决方案是找出如何在没有精确行数的情况下生存,或者根据应用程序正在做的事情做出假设(“99%的时间,这种更新是针对新行的”),或者两者兼而有之。
93ze6v8z3#
我是诺布你可以利用柜台。这只适用于长值,它将递增而不是覆盖该值。
3条答案
按热度按时间wrrgggsh1#
您可以在执行更新/插入之前查询cassandra。如果查询指示存在一行,您就知道这将是一个更新而不是插入。
5f0d552i2#
从根本上讲,如果不牺牲大量性能,您就无法做到这一点,因为这样会破坏存储引擎的日志结构特性,而且您需要锁定以避免与其他客户机的竞争。如果你能做得很好,Cassandra会开箱即用!
因此,“正确”的解决方案是找出如何在没有精确行数的情况下生存,或者根据应用程序正在做的事情做出假设(“99%的时间,这种更新是针对新行的”),或者两者兼而有之。
93ze6v8z3#
我是诺布
你可以利用柜台。这只适用于长值,它将递增而不是覆盖该值。