标签:... insert into 写入 sql table 效率 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分区字段构建的不合理造成每次写入都需要大量的排序工作,严重影响了写入数据的性能,特此总结,谨记教训。
标签:...,insert,into,写入,sql,table,效率,clickhouse 来源: https://blog.csdn.net/yeah_you_are/article/details/120988478
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。