2017-07-30 34 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,謝謝,聽起來不錯,希望有時間做這個測試。 –