2017-07-30 35 views
0

我尝试从我的SCADA系统向CrateDB(4年,多个CSV文件,大约87GB,几十亿个数据点/行)加载一堆数据。时间序列插入性能

写入数据目前很慢。我怎样才能提高插入行的速度?我使用crate JDBC驱动程序,并且我已经使用JDBC批量插入。

在我的系统只能加载每秒约1500个值(8GB RAM,4GB堆,与5x7k磁盘RAID 10)

在同一台机器InfluxDB能够加载(使用相同的客户端程序,但不包含JDBC)约每秒值!

我不希望80kHz与箱子,但希望超过1.5kHz,20kHz是可以接受的。加载数据需要几天或几周的时间。

我的数据库表看起来像这样:

CREATE TABLE EVENTHISTORY (
tag string NOT NULL, 
ts TIMESTAMP NOT NULL, 
value_number double INDEX OFF, 
value_string string INDEX OFF, 
value_timestamp TIMESTAMP INDEX OFF, 
status long INDEX OFF, 
manager integer INDEX OFF, 
user_ integer INDEX OFF, 
primary key (tag, ts) 
); 

我试图删除主键,但没关系。我使用多个线程(4到16,没有区别)在8k大块(一个大块= 8096行)中写入数据。

对于线程我使用JDBC连接池org.apache.commons.dbcp2.BasicDataSource;

如何提高CrateDB的写入速度?

回答

0

很遗憾听到您在使用CrateDB插入速度时遇到困难。在Crate.io中,我们确实在大型集群上插入了大于800k插入/秒的基准 - 所以你的问题看起来很奇怪。首先,您可以向我们发送关于群集设置的一些信息,例如nr。节点,CrateDB版本等?这真的会帮助我们重现它。

为了缩小您的问题,并确定这是否真的是服务器问题,您可以尝试先将CSV文件转换为JSON,然后使用COPY FROM进行批量插入。如果它仍然很慢,这确保我们可以在那里进行调查。

+0

我只使用单个节点和最新的docker pull进行测试。我在同一台机器上尝试了Elasticsearch,达到了15kHz左右。 COPY FROM,谢谢,听起来不错,希望有时间做这个测试。 –