只用到最近 3 天数据的订单表如何分表呢 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
TypeErrorNone
V2EX    程序员

只用到最近 3 天数据的订单表如何分表呢

  •  
  •   TypeErrorNone 2020-10-23 15:48:35 +08:00 2668 次点击
    这是一个创建于 1823 天前的主题,其中的信息可能已经有所发展或是发生改变。

    订单表,现在数据量很大,每天增量 10w,表用到的场景是插入,搜索三天内的数据,更新。
    也就是说三天前的数据是用不到的。

    如果按月分割,那么上个月最后三天的数据就操作不了,不然代码里要加很多逻辑处理。

    这种情况如何分表呢?

    14 条回复    2020-10-24 15:03:36 +08:00
    qiayue
        1
    qiayue  
    PRO
       2020-10-23 15:59:29 +08:00
    有一张实时表,所有的实时操作都在这张表操作。
    有另一个定时任务,把超过 3 天的订单移动到月表。
    TypeErrorNone
        2
    TypeErrorNone  
    OP
       2020-10-23 16:03:10 +08:00
    @qiayue 我也考虑过这样,innodb delete 会锁表吗
    IMCA1024
        3
    IMCA1024  
       2020-10-23 16:07:45 +08:00
    TypeErrorNone
        4
    TypeErrorNone  
    OP
       2020-10-23 16:12:50 +08:00
    @IMCA1024 这会导致插入订单
    Riscly
        5
    Riscly  
       2020-10-23 16:15:38 +08:00 via iPhone
    1 、实时表 /Redis 缓存,优点:开发快,缺点:增加数据库压力
    2 、上个 elasticsearch,优点:搜得快,后续可以搞搜索也能用上,缺点:开发成本高,如果有批量修改的话还是麻烦
    TypeErrorNone
        6
    TypeErrorNone  
    OP
       2020-10-23 16:22:51 +08:00
    @Riscly 不想再引入 redis 进入订单
    longchen888
        7
    longchen888  
       2020-10-23 17:09:31 +08:00
    有一张实时表,所有的实时操作都在这张表操作。
    有另一个定时任务,把超过 3 天的订单移动到月表。

    --------
    迁移数据的时候,分页(比如一页 500 条)迁移数据,迁移完后,根据 ID 批量删除,应该就不会锁表了,想快的话,就多线程迁移;缺点是慢,优点是稳
    dorothyREN
        8
    dorothyREN  
       2020-10-23 17:55:34 +08:00
    加一个三天的表不就行了
    rrfeng
        9
    rrfeng  
       2020-10-23 18:15:08 +08:00
    那你就按天建表呗,取个约数不就不存在跨表问题了。
    并且 drop 的时候也不会锁你的业务。
    MaxFang
        10
    MaxFang  
       2020-10-23 19:09:48 +08:00
    主表用于新数据插入,和最近 3 个月数据的查询。
    历史表可以按月等分表,每天脚本处理,从主表中筛选出超过 3 个月的订单数据,插入历史归中。
    如果每天都操作,每天的处理量也就一天的数据,按每天 10W 的数据来看,插入历史表和从主表删除,即使根据单个 id 来处理也完全够用。如果要加快速度,简单的方法,分页批量操作,或者按 ID 取模多脚本操作。
    wangritian
        11
    wangritian  
       2020-10-23 19:16:39 +08:00
    不用分表,计划任务凌晨随便搞
    wangyanrui
        12
    wangyanrui  
       2020-10-23 20:06:17 +08:00 via Android
    插个楼

    不要为了分表而分表,一天约十万的插入量完全可以扛得住

    产品的需求时时在变化
    不要提前优化
    不要提前优化
    不要提前优化

    建议:先抗住,量大了迁移到 TiDB 或者加个 ES
    kanepan19
        13
    kanepan19  
       2020-10-24 10:24:59 +08:00
    我们当前一天 200W 的量单表也没问题.

    如果一定要分表, 可以考虑按时间分表 ,按月或者按日分表
    fengpan567
        14
    fengpan567  
       2020-10-24 15:03:36 +08:00
    上 sharding jdbc,按日期分表
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3287 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 11:47 PVG 19:47 LAX 04:47 JFK 07:47
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86