美文网首页
订单号生成策略

订单号生成策略

作者: 极客123 | 来源:发表于2018-10-25 08:21 被阅读0次

    订单号:

    全局唯一:
    安全不可推测;
    趋势递增;
    效率(生成,使用,索引)
    控制并发时间

    =====================
    int 优于 string
    int 优于 varchar
    大型互联网都会是int
    =====================
    Oracle里面自带UUID功能 针对大数据插入的时候 插入int类型效率大于varchar2 仅限于Oracle
    查询 varchar2 略优于int
    MySQL int >>>> varchar 数据库优化的角度考虑 深入了解下。
    =====================
    并发:
    =====================
    策略 : UUID/GUID 通用唯一标识码
    组成:当前日期+时间+始终序列+机器码识别号(Mac地址或者其他) 个人的pc上==》mac地址(很多电脑有多个网卡) 500W数据会有两个重复

    CountDownLatch 发令枪 深入了解下
    对于生成的订单号测试的时候,可以打印出sql语句 然后新建表 设定主键 (主键是唯一的) 执行产生的sql 检查是否产生的id唯一性

    优点: 简单
    缺点: 对用户不友好,
    ==========================
    策略二 : 数据库自增 (分库分表之后,高并发情况下直接崩溃, 单体下还是可以适应的 但是多数据库就不行的)
    MySQL里面有自增
    Oracle里面是根据Sequence 在数据库集群下,可以设定不同的起步值 妥协的方式

        A       B       C
        1       2      3
        11  12  13
              设置不同的步长
    

    大表无法水平分表
    高并发插入数据需要事务机制 数据承受的并发量: 机器硬件 参数调优等(硬方式限制并发)
    在业务操作中,必须先插入父表,再插入子表 先父后子
    =========================
    Twitter 雪花算法 snowflake
    通过缓存消峰
    =========================
    策略四: Redis ID自增 自带函数

    CMD: telnet ip 端口

    相关文章

      网友评论

          本文标题:订单号生成策略

          本文链接:https://www.haomeiwen.com/subject/optqtqtx.html