首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

求助大表优化方案

  •  
  •   alamaya · 198 天前 · 1327 次点击
    这是一个创建于 198 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有一张用户标签表,一个用户一个标签一条数据,现在这张表超过 2 亿了,需要做分库分表,怎么分,既能满足用用户查询标签,也能用标签查询用户,以及数据结构、整体架构上能否优化,求助各位大佬。

    17 回复  |  直到 2018-08-09 08:02:58 +08:00
        1
    nine99   198 天前
    搞两份,一份按用户分,一份按标签分。或者看下你业务按哪个查比较多,就怎么分
        2
    alamaya   198 天前
    @nine99 主要是存在一个数据量不均衡的问题,有的标签用户很多,有的标签又没啥用户,所以还是只能按用户分,随着数据量的增长,可能还是会存在单表过大的问题。
    按用户分的话,分表的张数如何考虑,而且也确实有通过标签查用户的需求,虽然场景不多,这个查询怎么做好。
    或者说有没有比现有一个用户一个标签一条数据这样的数据存储方式更优化的数据结构?
        3
    owenliang   198 天前
    按用户分 mysql。

    然后数据打到 ES/Mongo 中做旁路。
        4
    alamaya   198 天前
    @owenliang 能详细说一下吗,还有就是性能上 ES/mongo 能否满足?因为涉及这张表的接口访问量都非常大
        5
    owenliang   198 天前 via Android
    @alamaya 性能问题优先 redis 缓存热点,其次考虑 mysql 分表内走索引或者 mongodb 走索引,es 不适合那么高性能。
        6
    unforgiven   198 天前
    mysql 吗?表分区做了吗
        7
    alamaya   198 天前
    @owenliang 那针对少量的通过标签查用户的场景,怎么处理好?
        8
    owenliang   198 天前 via Android
    @alamaya 不是 mongo 旁路了吗,是个分布式存储
        9
    abcbuzhiming   198 天前
    @unforgiven 尽量不要做表分区,mysql 的表分区一直不太稳定,业界反应 bug 挺多的
        10
    jmone   198 天前
    @nine99 的路子是最直接有效的,定好再次分表的规则,能够做到一直水平分下去,再做上 redis 主动缓存,2 亿数据可以快到不可想象
    @owenliang mongo 的性能就是 shit,过千万记录之后,加索引都救不了
        11
    sunsh2017   198 天前 via Android
    全部改用 redis, 结束。
        12
    ebingtel   198 天前
    @sunsh2017 按照 lz 的叙述,感觉数据量会一直增长,成本会不会太高啊?
        13
    ghos   198 天前
    有没有什么没那么复杂的方案哦
        14
    zhengxiaowai   198 天前
    你先搜索一下,这个问题在 V 站讨论不下十几次了
        15
    fireapp   198 天前 via iPhone
    hbase 有点大炮打蚊子:数据存两套
    一套 userId + tag 当 rowkey,专门给用户查询 tag 用
    一套 tag + userId 当 rowkey, 给 tag 查用户用
    数据就是增长到 200 亿都是亚秒级查询
        16
    bapijun   198 天前
    高性能 mysql 上面有一整章说这件事情怎么办,你可以看看,我记得知乎以前也有说过,主要是垂直拆分和水平拆分两种
        17
    sunsh2017   197 天前 via Android
    @ebingtel 不高 用 redis 是最好的方案 用 set 即可 用户数不过百万 标签也不过百万 其实很省的 嫌费内存 你用 ssdb 好了
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4084 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 21ms · UTC 06:23 · PVG 14:23 · LAX 22:23 · JFK 01:23
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1