五、主键用自增数字还是UUID?
UUID
是通用唯一识别码的缩写,其目的是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。
在数据库集群中,为了避免每个MySQL
各自生成的主键产生重复,所以有人考虑采用UUID
方式。
MySQL
生成UUID
mysql > select UUID();
23c7df22-1281-11eb-8a38-0800276c3e95
1. 使用UUID的好处
- 使用
UUID
,分布式生成主键,降低了全局节点的压力,使得主键生成速度更快 - 使用
UUID
生成的主键值全局唯一 - 跨服务器合并数据很方便
2. UUID主键的缺点
UUID
占用16
个字节,比4
字节的INT
类型和8
字节的BIGINT
类型更加占用存储空间UUID
是字符串类型,查询速度很慢UUID
不是顺序增长,作为主键,数据写入IO
随机性很大
3. 主键自动增长的优点
INT
和BIGINT
类型占用存储空间较小MySQL
检索数字类型速度远快过字符串- 主键值是自动增长的,所以
IO
写入连续性较好
UUID
作为数据表的主键,而是要利用数据库中间件来生成全局主键