gpt4 book ai didi

java - 从 Java 应用程序将数据导入 Cassandra 2 的最快方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:48:13 24 4
gpt4 key购买 nike

我已经尝试过 DataStax Java 驱动程序,插入数据的最快方法似乎是使用所有内联参数组成一个 CQL 字符串。

这个循环在我的测试集群上需要 2500 毫秒左右:

PreparedStatement ps = session.prepare("INSERT INTO perf_test.wibble (id, info) VALUES (?, ?)")
for (int i = 0; i < 1000; i++) session.execute(ps.bind("" + i, "aa" + i));

内联参数的相同循环大约是1300ms。如果有很多参数,情况会变得更糟。我知道我可以使用批处理一次插入所有行,但这不是此测试的目的。我也尝试使用 session.execute(cql, params) 并且速度更快但仍然不匹配内联值。

编写 CQL 字符串当然方便又简单,但有没有更快的方法?

最佳答案

您可以做两件事来提高性能。首先是使用 executeAsynch在驱动程序中运行而不是 execute

第二件事是使用 batch statement而不是循环(我知道你提到这不是测试的目的,但是当涉及到循环插入时,批处理就是你想要的)。

PreparedStatement ps = session.prepare("INSERT INTO messages (user_id, msg_id, title, body) " +
"VALUES (?, ?, ?, ?)");
BatchStatement batch = new BatchStatement();
batch.add(ps.bind(uid, mid1, title1, body1));
batch.add(ps.bind(uid, mid2, title2, body2));
batch.add(ps.bind(uid, mid3, title3, body3));
session.execute(batch);

关于java - 从 Java 应用程序将数据导入 Cassandra 2 的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20491090/

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