InfluxDb中寫入重複資料問題解決方案

2022-02-02 11:01:33 字數 2458 閱讀 1445

1.influxdb版本

0.10.3

2.measurement

todaychargetimereport

只有time和field列,沒有tag列

3.現象:通過定時任務向上面的表中寫入資料:

var point = new

point();

point.measurement = "

todaychargetimereport";

point.precision =influxdb.net.enums.timeunit.milliseconds;

point.timestamp =time;

point.fields = new dictionary() ,,};

point.tags = new dictionary();

points.add(point);

定時任務5分鐘執行一次,定時任務的內容是查詢sql,查詢出凌晨至今的資料,10分鐘乙個間隔,寫入influxdb,發現influxdb中偶爾會出現重複資料:

16:00:00

2017/7/27

16:10:00

2017/7/27

16:20:00

2017/7/27

16:30:00

2017/7/27

16:40:00

2017/7/27

16:50:00

2017/7/27

17:00:00

2017/7/27

17:10:00

2017/7/27

17:20:00

2017/7/27

17:30:00

2017/7/27

17:40:00

2017/7/27

17:50:00

2017/7/27

18:00:00

2017/7/27

18:10:00

2017/7/27

18:20:00

2017/7/27

18:30:00

2017/7/27

18:40:00

2017/7/27

18:50:00

2017/7/27

19:00:00

2017/7/27

19:10:00

2017/7/27

19:20:00

2017/7/27

19:30:00

2017/7/27

19:40:00

2017/7/27

19:50:00

2017/7/27

20:00:00

2017/7/27

20:10:00

2017/7/27

20:20:00

2017/7/27

20:30:00

2017/7/27

20:40:00

2017/7/27

20:50:00

2017/7/27

21:00:00

2017/7/27

21:10:00

2017/7/27

21:20:00

2017/7/27

21:30:00

2017/7/27

21:40:00

2017/7/27

21:50:00

2017/7/27

22:00:00

2017/7/27

22:10:00

2017/7/27

22:20:00

對應的grafana也出現錯亂現象:

4.詭異的地方

4.1 influxdb中只有time和field列,如果時間相同,應該寫不進去,但是實際卻寫進去了

4.2 如果grafana中按group by time(10m),然後對值取max,理論上應該能過濾掉重複值,但是實際過濾後,還有一大段空值

5.解決方案

因為influxdb不支援刪除操作,通過如下操作暫時解決該問題:

5.1 通過程式,將「todaychargetimereport」表中的資料讀出來,進行去重操作後,寫入「todaychargetimereport1」

5.2 drop measurement "todaychargetimereport"(謹慎!可能會影響influxdb10分鐘左右不能訪問)

5.3 通過程式,將「todaychargetimereport1」表中的資料讀出來,寫入「todaychargetimereport」

5.4 定時任務,寫入influxdb時的時間精度,由「milliseconds」改為「minutes」

問題暫時解決,初步懷疑是時間精度導致的,後續繼續觀察是否還有重複資料。

向InfluxDB寫入資料

官網例子 在influxdb中的資料是通過 時間序列組織的 包含乙個測量變數,比如cpu load或者溫度。時間序列有無數的點,每個點都是metric的離散取樣。點包含time 乙個時間戳 乙個measurement測量變數 比如是cpu load 至少乙個kv鍵值對field 測量變數的值,比如 ...

刪除表中重複資料

刪除表中重複資料 取出line fancy2表中fancy name相同的最小fancy id 寫進tmp表 create table tmp as select min fancy id as col1 from line fancy2 group by fancy name 刪除line fan...

刪除表中重複資料

如果重複資料很多,被刪掉的可能是大部分記錄,業務又允許的情況下,可以考慮重建表 create table newtable as select distinct from table rename table to oldtable rename newtable to table create i...