0

我尝试将一堆数据从我的 SCADA 系统加载到 CrateDB(4 年,多个 CSV 文件,大约 87GB,数十亿个数据点/行)。

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

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

在使用 InfluxDB 的同一台机器上,每秒可以加载(使用相同的客户端程序,但不使用 JDBC)大约80000个值!

我不希望 Crate 有 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 的写入速度?

4

1 回答 1

0

很遗憾听到您在 CrateDB 的插入速度上苦苦挣扎。在 Crate.io,我们确实在更大的集群上插入了高达 >800k 插入/秒的基准 - 所以你的问题看起来真的很奇怪。首先,您能否向我们发送一些有关您的集群设置的信息,例如 nr. 节点数、CrateDB 版本等?这真的会帮助我们重现它。

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

于 2017-07-31T08:43:19.757 回答