各种全局主键生成策略对比
来源:互联网 发布:淘宝数据分析哪些内容 编辑:程序博客网 时间:2024/06/05 19:59
转自:http://blog.csdn.net/gongzi2311/article/details/58191208
1.数据库自增主键
优点:简单;唯一;递增;增幅固定
缺点:写性能决定每秒生成数量上限,扩展差;分布式数据库,主节点挂掉,备节点上时可能有问题(主节点写入成功,日志未同步到备节点,导致id重复)
备注:可有一个写库变成多个库同时写,如1、2、3三个库同时写,初始id分别为1、2、3,自增幅度都为3。这种方式可保证id不重复。但导致id不是绝对递增,而是整体趋势上递增;其次是写入的压力仍然很大,MySQL容易成为性能瓶颈。
2.数据库批量生成id
优点:效率高;降低数据库压力
缺点:需考虑安全性问题,防止取到重复id;如果业务需求是每次只生成一个id,性能有问题
备注:利用数据库,初始化一行数据,初始值为1,取10个id,就给该值加10,调用端取返回id值的前10个数值。以上即为批量生成id思路。
3.UUID
优点:本地生成;效率高
缺点:UUID字符串过长,且无实际意义;无法保证递增趋势;建立的索引查询效率低
4.当前时间毫秒与微秒
优点:本地生成;延时低;索引性能高
缺点:1秒内请求过1000后id肯定重复,微秒同理
5.zookeeper生成id
利用zookeeper增加版本号的方式是其中一种。建立节点,每次使节点版本加1。
优点:利用zk集群解决单点问题
缺点:性能不高;id有上限,提供32位id;需要zk服务
备注:具体代码见 http://blog.csdn.net/gongzi2311/article/details/58144091
6.snowflake算法
twitter开源分布式生成id算法。
优点:基本解决了所有问题
缺点:每个节点时间可能不同,生成id是整体趋势递增的
备注:具体代码见 http://blog.csdn.net/gongzi2311/article/details/58189306
阅读全文
0 0
- 各种全局主键生成策略对比
- 各种全局主键生成策略对比
- 分库分表全局主键生成策略
- Hibernate各种主键生成策略
- 数据库分库分表(sharding)---全局主键生成策略
- 全局唯一ID的生成策略对比
- 数据库分库分表(sharding)系列(二) 全局主键生成策略
- 数据库分库分表(sharding)系列(二) 全局主键生成策略
- 数据库分库分表(sharding)系列(二) 全局主键生成策略
- 数据库分库分表(sharding)系列(二) 全局主键生成策略
- 数据库分库分表(sharding)系列(二) 全局主键生成策略
- 数据库分库分表(sharding)系列(二) 全局主键生成策略
- 数据库分库分表(sharding)系列(二) 全局主键生成策略
- 数据库分库分表(sharding)系列(二) 全局主键生成策略
- 数据库分库分表(sharding)系列(二) 全局主键生成策略
- 数据库分库分表(sharding)系列(二) 全局主键生成策略
- 数据库分库分表(sharding)系列(二) 全局主键生成策略
- 数据库分库分表(sharding)系列(二) 全局主键生成策略
- 史上最全最好用的自定义交易支付密码及弹框
- Linux for Ubuntu Clion配置OenGL(C/C++)开发环境
- PS中的小技巧——不定期更新
- bzoj4569: [Scoi2016]萌萌哒
- tensorflow_scope作用
- 各种全局主键生成策略对比
- 路由器认识与设置方法
- [python] 函数小结
- Android EditText 默认不弹出输入法
- “玲珑杯”线上赛 Round #15 河南专场 H -- 喵哈哈村的战斗魔法师丶坏坏い月 分块/线段树
- dwr消息推送---向指定用户推送
- C#+ XML 增删改查
- 数据结构-顺序表的基本操作
- ConcurrentHashMap