写入clickhouse效率低总结

在将数据写入clickhouse中,直接使用的原生的jdbc,采用了两种方式。

//方式一
insert into table (row1,row2,...) values (?,?,...)
//此处省略set语句
PreparedStatement.addBatch();
PreparedStatement.executeBatch();
Connnection.commit();
PreparedStatement.clearBatch();
//方式二
/* sql语句采用 insert into table (row1,row2,...) values ('value1','value2',...),('value1','value2',...),...
*/
String sql = "insert into table (row1,row2,...) values ";
//此处for循环是为了拼接sql语句
for() {
    
}
Statement.execute(sql);

两种方式都试了1000、2000、3000、4500等多个批次写入。基本超过一个批次5000条都会报错:too many parts。而在这些测试中,写入速度都很慢,基本跑一会儿就会出现:read time out超时,但是服务端那边的数据还在写入,就是说有滞后的情况。经过查阅资料,官网和众博客主都基本是采用这种原生jdbc写入数据,并且速度可以达到每秒10w条的写入原文链接。随后联系了阿里的客服人员,最后确定是建表的问题,对于partition分区字段构建的不合理造成每次写入都需要大量的排序工作,严重影响了写入数据的性能,特此总结,谨记教训。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值