1. 什么是UUID?
-
UUID是通用唯一识别码的缩写,主要作用是让分布式系统中的数据具有唯一性;
-
UUID由三个部分组成:
- 第一个部分是时间戳生成的;
- 第二个部分是主机的硬件时钟序列;
- 第三个部分是唯一机器识别号
2. 为什么要使用UUID?
- 在数据库集群中,为了避免每个MySQL各自生成的主键重复,所有有人考虑采用UUID方法;
好处:
- 使用UUID,分布式生成主键,降低了全局节点的压力,使得主键生成速度更快;
- 使用UUID生成的主键值全局唯一;
- 跨服务器合并数据方便;
缺点:
- UUID占用16个字节,比4字节的int类型和8字节的bigint类型更加占用存储空间;
- UUID是字符串类型,查询速度很慢;
- UUID不是顺序增长,作为主键,数据写入IO随机性很大;
3. 主键自动增长的优点
- int和bigint类型占用空间小;
- 检索速度比字符串块;
- 是自动增长的,所以IO写入连续性较好;
4. 分布式环境下的主键自动增长
- 使用MyCat中间件实现分布式主键;
- MyCat用的单线程,但是性能上也没有什么问题;
5. 总结
- 无论什么场合都不要用UUID作为主键;