订单号:
全局唯一:
安全不可推测;
趋势递增;
效率(生成,使用,索引)
控制并发时间
=====================
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 端口
网友评论