如何解决为什么clickhouse写批处理记录很慢?
我使用 clickhouse-jdbc 将数据写入 clickhouse 的分布式“所有”表(3 个主机用于 3 个分片 1 个副本)。
使用 PreparedStatement 对 1000000 条记录进行 5000 次批量提交花费 6280 秒。
...
ps.setString(68,dateTimeStr);
ps.setDate(69,date);
ps.addBatch();
System.out.println("i: " + i);
if(i % 5000 == 0 || i == maxRecords) {
System.out.println(new java.util.Date());
ps.executeBatch();
System.out.println(new java.util.Date());
// ps.execute();
conn.commit();
System.out.println("commit: " + new java.util.Date());
}
...
每天插入一亿条记录有什么更好的方法吗?
解决方法
是的,由于每次插入操作都需要完成大量逻辑(将数据同步到特定分片等),因此插入 Distributed engine 可能会很慢。
您可以尝试调整一些设置,如上面链接中所述。
但是,我发现直接写入底层表更方便快捷。但这需要您关心在所有节点上分片和传播数据,即根据自己的喜好分配数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。