深入分析 Golang 并发 Append Slice 的安全问题

背景

导出数据库中的数据,由于数据量巨大且查询复杂,完成导出的时间很长,因此通过将并发查询然后将结果合并到一起。

在导出的数据量只有 30 多万时,导出的记录数和 sql count 出的数量一致; 但当导出超过数据量超过百万时,导出的数据量变少了。

此时意识到是忽略了并发问题,将 append 操作加上锁后验证一切正常。

[阅读全文]