Category 热门活动

一、概述

背景:随着数据库数据量的增长, 基于性能原因需要进行分库分表,分库分表会导致主键ID重复问题。 特点:

全局唯一性[必须];

趋势递增[非必须]。由于互联网大部分采用Mysql的Innodb引擎,因此保持有序主键ID有利于insert的效率;

单调递增[非必须]。保证下一个ID大于上一个ID,可以保证事务版本号,排序等特殊场景需求;

信息安全[非必须]。如果ID是连续的,容易被爬虫爬取数据。

二、实现方案

2.1 Java原生UUID

Universally Unique Identifie,通用唯一标识码的简称。为了保证唯一性,通用UUID规范使用MAC地址、时间戳、名字空间以及随机数等元素,保证UUID的唯一性。UUID通常由32个16进制数字,以"-"分成5段,形式为8-4-4-4-12,因此UUID理论上总数为16^32个。 优点:性能非常高,本地生成,不依赖网络; 缺点:ID是随机生成的,不连续的,影响性能。

2.2 自增ID + 步长

利用数据库自增主键,不同机器设置不同步长,步长和机器数相同(参考主键生成策略)。 优点:满足全局ID唯一性,同时利用了数据库自增主键ID,提高了性能; 缺点:

只能趋势递增

Copyright © 2088 聚星网游活动中心-最新游戏资讯与福利放送 All Rights Reserved.
友情链接