我尝试将一堆数据从我的SCADA系统加载到CrateDB(4年,多个CSV文件,大约87GB,数十亿个数据点/行)。
目前数据写入速度很慢。如何提高插入行的速度?我使用crate JDBC驱动程序,我已经使用JDBC批量插入。
在我的系统上,我每秒只能加载 1500 值(8GB RAM,4GB堆,带有5x7k磁盘的RAID 10)
在使用InfluxDB的同一台机器上,可以加载(使用相同的客户端程序,但不能使用JDBC)每秒 80000 值!
我不希望80kHz带有Crate,但希望超过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 :(得分:0)
伤心地听到你与插入速度与CrateDB挣扎。在Crate.io,我们确实在更大的集群上插入了大约800k插入/秒的基准 - 所以你的问题看起来很奇怪。首先,您能否向我们发送一些关于您的群集设置的信息,例如nr。节点,CrateDB版本等?这真的有助于我们重现它。
要缩小您的问题并查看这是否真的是服务器问题,您可以先尝试将CSV
文件转换为JSON
,然后使用COPY FROM进行批量插入。如果它仍然很慢,这可以确保我们可以在那里进行调查。