跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教下 一对 N 数据表同步的场景怎么提高并发性能
未分類
7 6 月 2020

请教下 一对 N 数据表同步的场景怎么提高并发性能

请教下 一对 N 数据表同步的场景怎么提高并发性能

資深大佬 : yanshenxian 9

一对 N 指的是一张原始记录表 (raw_record_table) 需要同步数据到 N 张不同维度的业务数据表 (business_table_1, …business_table_n) (同步为增量更新操作), 这些业务表都有一个相同的业务关连键 (比如 userId)

我现在想到了两个方案
方案 1: 多个线程根据 userId 取模 并发读取 raw_record_table, 每个线程读取的范围是确定的, 这样同步操作在单个线程里面不需要竞争
方案 2: 多个线程无限制并发读取 raw_record_table, 这样在接下来同步操作可能存在竞争, 需要加锁保证正确性

方案 1 的并发能力和取模数有关, 并且如果 userId 分布不均匀, 性能可能更差
方案 2 加锁可能开销大

请教下这两个场景应该怎么选择呢, 有没有更好的方案可以解决这个问题

大佬有話說 (3)

  • 資深大佬 : taoprogramer

    单线程读 mysql 写到 kakfa,通过 kafka 的多个分区来并发写你那个业务表

  • 主 資深大佬 : yanshenxian

    @taoprogramer 没太明白,请问应该怎么设置分区规则和消费呢。。如果是直接按照 user_id 分区,这个应该和方案一是一样的吧

  • 資深大佬 : taoprogramer

    @yanshenxian 按主键分区就行了,可以做到比较均匀,你按 user_id 分片不能用户的不是不一样么

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具