1
sujin190 2019-03-18 14:39:31 +08:00
如果结果只是需要统计展示的话,最快的应该是再加两个表,一个存是否出去,一个存是否发送,把更新操作变成批量写是最快的了吧,到时再联表查一下就出来了
|
2
codeismylife OP @sujin190 我也想过,业务上不允许,所以只能从多线程之类的角度来考虑了。
|
3
maxiaofeng 2019-03-18 14:48:56 +08:00
@sujin190 咋不直接加两个字段
|
4
sujin190 2019-03-18 16:31:22 +08:00
@maxiaofeng #3 加两个字段不还是更新操作么?这种情况就要把更新操作变成批量写才快啊
|
5
sujin190 2019-03-18 16:32:44 +08:00
@codeismylife 那要不就新写到新表里,全部做完之后统一合并之后批量更新,如果字段值占用字节数不变,批量更新估计也不慢
|
6
FrailLove 2019-03-18 16:34:55 +08:00
我怎么感觉 “从数据库取出 100 万数据并发送到指定接口” 是个伪需求
|
7
mortonnex 2019-03-18 16:46:10 +08:00
瓶颈全在 IO 上:
1.优化数据库连接和 sql 2.网络用 netty,利用零拷贝 3.多线程,每个线程负责一部分数据 4.批量更新,因为 update 会锁表 其实这里使用多线程意义不大,因为单线程也可以打满网络 IO |
8
ty89 2019-03-18 17:09:01 +08:00
典型的”生产者-消费者”模型
1,一次取出一批数据,把待处理数据放进队列中。如果数据已经在队列里,那么状态就是‘已取出’,这样避免了 update 操作 2,足够多的 worker 3,取出数据之后,放进 redis 里 |