一对 N 指的是一张原始记录表 (raw_record_table) 需要同步数据到 N 张不同维度的业务数据表 (business_table_1, ...business_table_n) (同步为增量更新操作), 这些业务表都有一个相同的业务关连键 (比如 userId)
我现在想到了两个方案
方案 1: 多个线程根据 userId 取模 并发读取 raw_record_table, 每个线程读取的范围是确定的, 这样同步操作在单个线程里面不需要竞争
方案 2: 多个线程无限制并发读取 raw_record_table, 这样在接下来同步操作可能存在竞争, 需要加锁保证正确性
方案 1 的并发能力和取模数有关, 并且如果 userId 分布不均匀, 性能可能更差
方案 2 加锁可能开销大
请教下这两个场景应该怎么选择呢, 有没有更好的方案可以解决这个问题
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.