我目前正在编写一个基准来比较多个时间序列数据库。测试之一是一个接一个地写入数据点。用于InfluxDB的方法如下:
@Override
public long insert(String table, long timestamp, String tags, List<Field> fields) {
Builder b = Point.measurement(table);
String[] tagsArray = tags.split(",");
for (String t : tagsArray) {
b.tag(t.split("=")[0], t.split("=")[1]);
}
for (Field f : fields) {
b.addField(f.str, f.num);
}
long beg = System.nanoTime();
Point pt = b.build();
influxDB.write(pt);
influxDB.flush();
long end = System.nanoTime();
return end-beg;
}
如您所见,我使用flush方法强制InfluxDB写入数据,否则仅正确写入发送到数据库的几个点(10/1000)。我的问题是:同花顺是否会影响表演?如果是,我如何摆脱它并测量Influx写入单个数据点所花费的实时时间而不会丢失我尝试插入的任何数据?
在代码的前面,我写了influxDB.enableBatch(100, 200, TimeUnit.MILLISECONDS);
在您提到它之前,我会用另一种方法测试批量导入。