InfluxDB循环插入

InfluxDB jar包提供的batchPoint写入是异步且非常快的,所以浪费时间的一个是类的分解再装填。

这里涉及到一个时间问题,System.currentTimeMillis();是需要时间的,所以这里我们只创建一次当前时间,在时间精度要求不高的情况下,我们使用time+i的方式来进行时间的写入,大大加快了写入速度且没有数据丢失。

/**
 * 对list进行插入
 * @param list 数据list
 */
public void insertList(List<AlarmInfluxDB> list) {
	System.out.println("开始时间:" + new Date().getTime());
	InfluxDB client = InfluxDBFactory.connect(openurl, username, password);
	int i = 0;
	BatchPoints batchPoints = BatchPoints.database(database).consistency(InfluxDB.ConsistencyLevel.ALL).build();
	Long start = System.currentTimeMillis();
	try {
		for (AlarmInfluxDB info : list) {
			Builder builder = Point.measurement(measurement);
			Point point = entityGetTest(info,builder).time(start+i, TimeUnit.MILLISECONDS).build();
//				Point point = entityGetTest(info,builder).time(System.currentTimeMillis(), TimeUnit.NANOSECONDS).build();
			batchPoints.point(point);
			i++;
			//每十万条自动插入一次
			if (i >= 100000) {
				i = 0;
				client.write(batchPoints);
				batchPoints = BatchPoints.database(database).consistency(InfluxDB.ConsistencyLevel.ALL).build();
			}
		}
		client.write(batchPoints);
		System.out.println("结束时间:" + new Date().getTime() + ",i:" + i);
	} catch (Exception e) {
		e.printStackTrace();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值