主键使用自增ID还是UUID?能说说原因吗?

自增ID和UUID作为主键的考虑主要有两方面,

一个是性能

另一个就是存储的空间大小,

一般没有特定的业务要求都不推荐使用UUID作为主键

因为使用UUID作为主键插入并不能保证插入是有序的,有可能会涉及数据的挪动,也有可能触发数据页的分裂,因为一个数据页的大小就是16KB,这样插入数据的成本就会比较高。

自增ID作为主键的话插入数据都是追加操作,不会有数据的移动以及数据页的分裂,性能会比较好。

另一方面就是存储空间,

自增主键一般整形只要4个字节,长整形才占8字节的大小空间

而使用UUID作为主键存储空间需要16字节的大小,会占用更多的磁盘,

在二级索引中也会存出一份主键索引,这样多占用消耗的空间就是两倍,性能低,

所以不推荐使用。

自增id是连续的,插入过程也是顺序的,总是插入在最后,减少了页分裂,有效减少数据的移动。

所以尽量不要使用字符串(如:UUID)作为主键。