gpt4 book ai didi

node.js - 如何使用 "Non Atomic"批处理/管道在 Scylla 中运行多个查询

转载 作者:行者123 更新时间:2023-12-04 14:57:02 25 4
gpt4 key购买 nike

我知道 Scylla 允许像这样的批处理语句。

BEGIN BATCH
<insert-stmt>/ <update-stmt>/ <delete-stmt>
APPLY BATCH

这些语句具有性能影响,因为它确保了原子性。但是,我只是想在单个 IO 中从我的 node 客户端执行许多插入语句。不需要这些插入之间的原子性。知道我该怎么做吗?找不到任何东西。

最佳答案

在 Cassandra 世界中批处理多个插入通常是一种反模式(除非它们进入一个分区,请参阅 docs)。当您在一批中将插入发送到多个分区时,协调器 Node 将需要注意从该批处理中获取数据并将它们发送到拥有数据的 Node 。这给协调 Node 增加了额外的负担,协调 Node 首先需要备份批处理的内容,以免在执行过程中崩溃时丢失,然后需要执行所有操作,等待执行结果再发送它返回给调用者(请参阅 this diagram 以了解所谓的记录批处理的工作原理)。

当你不需要原子性时,最好的性能是发送多个并行插入,并等待它们的执行 - 它会更快,它会减少 Node 上的负载,并且驱动程序可以使用 token 感知负载平衡策略,因此请求将被发送到拥有数据的 Node (如果您使用 prepared statements )。在 node.js 中,你可以通过使用 Concurrent Execution API 来实现。 - 它的用法有多种变体,因此最好查看文档以选择最适合您的用例的方法。

关于node.js - 如何使用 "Non Atomic"批处理/管道在 Scylla 中运行多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67758090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com