logstash mysql 性能_logstash导入mysql上亿级别数据的效率问题

本文探讨了在Logstash导入上亿级别MySQL数据时遇到的性能问题及解决方案。通过为时间字段`updated_ts`建立索引,并采用分批处理的方式,每次处理100000条数据,分页时每次处理50000条,避免一次性加载大量数据。同时,建议更新条件使用`updated_ts >= '2011-11-17 13:23:58'`来确保不会遗漏相同时间戳的数据。这种方法在实际操作中需谨慎处理时间相同的记录,以防止数据丢失。
摘要由CSDN通过智能技术生成

我也遇到你同样问题,可以这么解决:

1.给updated_ts时间字段加上索引。

2.分批处理原则

(1)你的SQL:每批处理100000个

SELECT a.party_id AS id ,a.* FROM PARTY_ALL_1 a WHERE a.updated_ts > '2011-11-17 13:23:58' order by a.updated_ts asc LIMIT 100000;

(2)logstash分页的时候每次处理50000个

SELECT * FROM (SELECT a.party_id AS id ,a.* FROM PARTY_ALL_1 a WHERE a.updated_ts > '2011-11-17 13:23:58' order by a.updated_ts asc LIMIT 100000) AS `t1` LIMIT 50000 OFFSET 0;

SELECT * FROM (SELECT a.party_id AS id ,a.* FROM PARTY_ALL_1 a WHERE a.updated_ts > '2011-11-17 13:23:58' order by a.updated_ts asc LIMIT 100000) AS `t1` LIMIT 50000 OFFSET 50000;

(3)处理两次就写一个最后一条记录的updated_ts时间到指定文件。下一个定时任务启动的时候进行循环处理就行,因为每批处理updated_ts都会改变

2018-05-16

3

f67e1a77e35a020f6a1e01784103c5bb.png

MR_Gordon

2019-05-28 15:45

这个办法没法解决updated_ts相同的问题,会漏掉大量的数据.

f67e1a77e35a020f6a1e01784103c5bb.png

MR_Gordon

2019-05-28 15:47

比如说,查询的100000条数据,排序后最后一条的时间是'2011-11-17 13:23:58',但是第100001条数据,时间也是'2011-11-17 13:23:58',下一次的查询,条件会有updated_ts > '2011-11-17 13:23:58',这样就漏掉了第100001条数据,实际使用的时候,这种现象特别常见,而且后果相当严重.

82c36cc6068bb5787982bf203fbc8c2f.png

GLC

2019-08-15 17:24

updated_ts > ='2011-11-17 13:23:58' 索引id设置规则,相同Id数据是覆盖的, 这样就不会丢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值