【发布时间】:2021-01-31 06:46:53
【问题描述】:
我是 Cassandra 的新手,所以我可能会遗漏一些东西。我的目标是使用 Java(DataStax 驱动程序)尽快插入 500,000 行。它目前每秒只插入 400 条记录,完整的 500,000 条插入需要很长时间才能完全执行。 ArrayList 中可能存在重复,因此插入过程应该执行插入/更新语句(换句话说,java 列表可能包含重复,但 db 表应该只包含不同的值)。
选择查询在不到 1 秒的时间内从 cassandra 中返回 50 万条记录,但插入到 cassandra 中需要很长时间。我希望插入 50 万条记录的时间可以少于 10 秒。我该怎么做才能使插入速度更快?
这是 Cassandra 表的定义:
create table mykeyspace.mytablename
(
my_id_record text primary key
);
这是 java 插入(仅显示相关代码,为简单起见删除任何错误处理):
String insertCQL = "INSERT INTO mykeyspace.mytablename(my_id_record) VALUES (?);";
PreparedStatement insertPrepStmnt = session.prepare(insertCQL);
for( String myId: myArrayList) {
cassandraConnect.session.execute(insertPrepStmnt.bind(myId));
}
如您所见,它将字符串值的 500,00 条记录插入到具有单个字段(主键字段)的表中。
每秒 400 次插入是 Cassandra 的预期速度吗?
任何关于我可以做些什么来加快速度的建议将不胜感激。
【问题讨论】: