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

为了解决Logstash导入MySQL上亿数据的效率问题,可以采取以下措施:1. 对时间字段`updated_ts`创建索引以加快查询速度;2. 分批处理数据,例如每批处理10万条,并使用LIMIT和OFFSET进行分页,每次处理5万个记录;3. 记录每批处理的最后一条记录的`updated_ts`,在下次任务中作为起点,避免数据遗漏。需要注意的是,当`updated_ts`相同的情况可能导致数据丢失,可以考虑使用`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、付费专栏及课程。

余额充值