В настоящее время я пишу тест для сравнения нескольких баз данных временных рядов.Один из тестов состоит в записи данных по одному.Метод, который делает это для 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);
Прежде чем вы упомянули об этом, я делаю тестовый пакетный импорт другим методом.