数据库主键是直接用雪花算法还是自增主键 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ppllss
V2EX    问与答

数据库主键是直接用雪花算法还是自增主键

  •  1
     < href="Javascript:" Onclick="downVoteTopic(949177);" class="vote">
  •   ppllss 2023 年 6 月 16 日 2441 次点击
    这是一个创建于 954 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大家是一般怎么考虑的?直接梭哈雪花算法,为以后的分库分表做无缝切换。
    还是等业务量起来要用到分库分表了,才开始用雪花算法

    还有大家业务表一般都必然会有什么字段?
    比如 create_by update_by create_time update_time 这些?

    ps 还是说用到分布式的唯一 id 中间件 比如 tinyid ?
    iblessyou
        1
    iblessyou  
       2023 年 6 月 16 日
    使用雪花 id 或 uuid 作为 Mysql 主键,被老板怼了一顿!
    https://mp.weixin.qq.com/s?__biz=MzkyMjI2MTkxOQ==&mid=2247486882&idx=1&sn=def61010aaf44428bd4152d55ec09153

    昨天我微信刚被推了这么个文,我还以为你是转这个来的
    IDAEngine
        2
    IDAEngine  
       2023 年 6 月 16 日
    自增就行了,业务量不大没必要
    ppllss
        3
    ppllss  
    OP
       2023 年 6 月 16 日
    burymme11
        4
    burymme11  
       2023 年 6 月 16 日   3
    个人建议,
    这份业务数据在 1 年内会出产生大量数据,大概率需要做分库分表的话,直接一开始就上分布式 ID 。
    如果不是,就自增 ID 先用着,等到时候了再分库分表改造,还能算自己的项目优化提升,加点 KPI ,绩效。
    千万别一步到位,更别想一步到位,给自己,给后面的人,都留口饭吃。
    ppllss
        5
    ppllss  
    OP
       2023 年 6 月 16 日
    @burymme11 有道理
    angeloce
        6
    angeloce  
       2023 年 6 月 16 日
    从业务最佳实践来讲, 建议用自增作为表主键,另外增加一个 uniqkey 作为业务主键。主要是除了从 MySQL 本身机制外,更需要应用层在 CUD 多种场景里的幂等防重的考虑。
    28Sv0ngQfIE7Yloe
        7
    28Sv0ngQfIE7Yloe  
       2023 年 6 月 16 日
    一百万内的数据,自增都没啥毛病,预期几何级别增长的数据量,需要准备分布式 ID
    UUID 就是依托答辩,任何情况我都不用
    28Sv0ngQfIE7Yloe
        8
    28Sv0ngQfIE7Yloe  
       2023 年 6 月 16 日
    另外,一般我习惯用 created_at ,感觉看起来比较顺眼
    leo97
        9
    leo97  
       2023 年 6 月 16 日 via Android
    @Morii UUID 有啥劣势吗?
    GiftedJarvis
        10
    GiftedJarvis  
       2023 年 6 月 16 日
    推荐 Spring Data 的命名方式: https://github.com/spring-projects/spring-data-commons/tree/main/src/main/java/org/springframework/data/annotation

    CreatedBy, CreatedDate, LastModifiedBy, LastModifiedDate
    28Sv0ngQfIE7Yloe
        11
    28Sv0ngQfIE7Yloe  
       2023 年 6 月 16 日
    @leo97

    没啥优势啊。小项目的时候自增很方便,大项目 uuid 又会碰撞,没有雪花好。

    目前没有遇到使用 uuid 会更好的场景
    NXzCH8fP20468ML5
        12
    NXzCH8fP20468ML5  
       2023 年 6 月 16 日 via Android
    可以考虑 uuid_short
    mysql8 才支持
    iblessyou
        13
    iblessyou  
       2023 年 6 月 16 日
    @ppllss 这个文应该可以很好解决你的问题了
    NXzCH8fP20468ML5
        14
    NXzCH8fP20468ML5  
       2023 年 6 月 16 日 via Android
    @iblessyou 你这篇文章里只证明 uuid 不行,没证明雪花不行啊
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2366 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 15:47 PVG 23:47 LAX 07:47 JFK 10: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