【发布时间】:2021-08-30 22:42:47
【问题描述】:
我是golang的新手,现在需要在mysql中读取大量数据,所以我想使用goroutine和channel来高性能获取数据,但不知道如何避免每个goroutine的数据重复和使整个过程稳定。例如,表模式如下,我想获取所有create_time小于1000000000000000000的记录,我想创建10个goroutine并同时读取数据,每个goroutine做一些业务逻辑,如何设计代码?谢谢你
id content last_id create_time
【问题讨论】:
-
创建 N 个 goroutines 都监听一个频道。在一个循环中,逐一读取 DB 行并将它们发送到通道。每个 goroutine 处理一个记录。您需要提供更多细节来决定如何处理计算结果。
-
我改变了我的问题并给出了我的要求的大致架构,可以帮助审查,谢谢
-
一次读取 1 条记录在计算上是不可行的。您如何指出一次读取一行的解决方案@BurakSerdar
-
@advayrajhansa,您一次从数据库中获取记录,对吧?
-
如果能读多个就更好,但只能读一个也可以