Cassandra 中的轻量级事务性能
Light-weight-transaction Performance in Cassandra
根据 cassandra 文档,LWT 性能很差。在以下情况下;
场景一;
- 从 cassandra 读取(线程 1)
- 如果上述步骤没有return任何数据(线程 2)
,则写入 cassandra
在这种情况下,上述步骤是在不同的线程中处理的。 Thread1
从 cassandra 读取数据,然后将其传递给 thread2
。然后thread1
会尽快查询新的数据。这将提高性能。但是cassandra上会有2个连接。
场景二;
- 使用 LWT 写入 cassandra。
在这种情况下,只有一个线程会向cassandra 发送查询。如果 LWT 性能真的很差,这会降低整体性能。
我不确定哪个更好。 LWT 性能真的很差吗?
如果您保证同一主键不会出现线程间的竞争条件,那么您应该继续使用先读后写的方法。
LWT 经历 4 个阶段的过程,准备、读取、提议、提交 - 这可能导致该过程比单个操作花费 4 倍的时间,因为它需要在充当协调器的节点之间进行 4 次往返/ 提议者和交易中涉及的副本。
根据 cassandra 文档,LWT 性能很差。在以下情况下;
场景一;
- 从 cassandra 读取(线程 1)
- 如果上述步骤没有return任何数据(线程 2) ,则写入 cassandra
在这种情况下,上述步骤是在不同的线程中处理的。 Thread1
从 cassandra 读取数据,然后将其传递给 thread2
。然后thread1
会尽快查询新的数据。这将提高性能。但是cassandra上会有2个连接。
场景二;
- 使用 LWT 写入 cassandra。
在这种情况下,只有一个线程会向cassandra 发送查询。如果 LWT 性能真的很差,这会降低整体性能。
我不确定哪个更好。 LWT 性能真的很差吗?
如果您保证同一主键不会出现线程间的竞争条件,那么您应该继续使用先读后写的方法。
LWT 经历 4 个阶段的过程,准备、读取、提议、提交 - 这可能导致该过程比单个操作花费 4 倍的时间,因为它需要在充当协调器的节点之间进行 4 次往返/ 提议者和交易中涉及的副本。