每一分钟写入 10 万行数据,有啥好的方案吗?

2020-07-23 21:29:41 +08:00
 goodspb
这 10 万数据在接下来的 2 分钟还要操作( update )

当然 db 是 mysql,应用是 spring boot
10876 次点击
所在节点    程序员
96 条回复
MintZX
2020-07-23 21:32:32 +08:00
应该是峰值吧,你不可能 24 小时一直一分钟 10 万吧?

先写到 redis,然后处理也在 redis 处理,然后不忙了再慢慢处理就好了。
misaka19000
2020-07-23 21:34:31 +08:00
先堆机器
nooper
2020-07-23 21:34:52 +08:00
不難吧,很快。
qiayue
2020-07-23 21:36:34 +08:00
一秒 1667 条,有什么难度?
goodspb
2020-07-23 21:36:35 +08:00
@MintZX 还真的是 24 小时,需求内容就是这样。不过当然了,最后每个人保留后 100 条数据,数据可以清理
fightingCode948
2020-07-23 21:37:57 +08:00
有个东西叫 mq
qiayue
2020-07-23 21:38:00 +08:00
如果一个请求带来一行数据,那就是设计有问题了
goodspb
2020-07-23 21:38:35 +08:00
@qiayue 写入应该不简单,单主情况下
rushssss
2020-07-23 21:38:53 +08:00
一秒 1667 条,有什么难度? MySQL 完全可以 hold 住
GM
2020-07-23 21:47:18 +08:00
@rushssss
一秒 1667 条不难,难的是全天 24 小时都这样。

当然我不相信这个是真是需求,大概率是设了一个理想上限,实际运行起来平均每分钟百十来条。
bagheer
2020-07-23 21:50:49 +08:00
入库后再处理 ×
处理后再入库 √
angryfish
2020-07-23 21:51:50 +08:00
批量还是单条 insert,策略是不一样的。批量很容易。单条估计够呛。要想办法合并
opengps
2020-07-23 22:13:20 +08:00
100000/60=1666.6 如果单行 1k,那么这个数字在 mysql 及时单条写入也不夸张,普通 5400 机械硬盘都能达到,ssd 就更轻松了。
参考: https://www.opengps.cn/Blog/View.aspx?id=422
dongisking
2020-07-23 22:21:20 +08:00
插入的不成压力,之前用一个 excel 更新 30w 数据库的功能,通过组装语句
```
UPDATE table_name SET col_1_name = CASE
WHEN id = '1' THEN 'col_1_value'
WHEN id = '2' THEN 'col_1_value'
ELSE col_1_name END,
col_2_name = CASE
WHEN id = '1' THEN 'col_2_value'
WHEN id = '2' THEN 'col_2_value'
ELSE col_2_name END
WHERE id IN('1','2')
```
一分钟完成更新
goodspb
2020-07-23 22:52:27 +08:00
@GM #10 是的,10W 的确是一个预估值,有可能是 20 万
947211232
2020-07-23 22:55:45 +08:00
如果数据都要入库,那用时序数据库;如果每天晚上才筛选少量入库,则 redis 缓存、mq 队列。
nvkou
2020-07-23 22:56:35 +08:00
业务不行,性能来凑。预算不行,打回重做
shoaly
2020-07-23 23:14:37 +08:00
@GM 真正跑起来 除以 10 就行了, 一般拍脑门的老大 都喜欢随便说的
goodspb
2020-07-24 00:00:49 +08:00
@shoaly #18 我是统计了过往业务量得出的一个预估值,不是产品给我,是我自己估
goodspb
2020-07-24 00:01:34 +08:00
@angryfish #12 应该是可以合并

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/692634

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX