zoukankan      html  css  js  c++  java
  • InfluxDb中写入重复数据问题解决方案

    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<string, object>() {
                                                    {"Sucess", Convert.ToInt32(value[1])},
                                                    {"Faild", Convert.ToInt32(value[2])},
                                                    {"FailureRate",Convert.ToDouble(value[3])}
                                        };
    
                            point.Tags = new Dictionary<string, object>();
    
                            points.Add(point);

    定时任务5分钟执行一次,定时任务的内容是查询SQL,查询出凌晨至今的数据,10分钟一个间隔,写入influxdb,发现influxdb中偶尔会出现重复数据:

    发现重复时间:2017/7/27 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

    问题暂时解决,初步怀疑是时间精度导致的,后续继续观察是否还有重复数据。

  • 相关阅读:
    软件工程课后作业一之30道随机四则运算程序2设计思想
    软件工程课后作业一之30道随机四则运算程序
    2015春季学期软件工程之阅读计划
    第一次冲刺 站立会议6
    第一次冲刺 站立会议5
    第一次冲刺 站立会议4
    第一次冲刺 站立会议3
    第一次冲刺 站立会议2
    第一次冲刺 站立会议1
    cnblogs用户体验
  • 原文地址:https://www.cnblogs.com/liugh/p/7269495.html
Copyright © 2011-2022 走看看