数据库优化专题---1、表的主键用数字还是UUID
最近思考和摸索一些数据库优化内容,与大家分享下。表的主键用数字还是UUID?什么是UUID?UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。UUID由以下几部分的组合:...
·
数据库优化专题—1、表的主键用数字还是UUID
数据库优化专题—2、逻辑删除还是物理删除
数据库优化专题—3、千万记录如何快速分页
数据库优化专题—4、读多写少和读多写多
数据库优化专题—5、删改数据如何避免锁表
数据库优化专题—6、如何避免偷换交易中的商品信息
数据库优化专题—7、SQL语句优化
数据库优化专题—8、Mysql参数优化
数据库优化专题—9、索引优化
数据库优化专题—10、存储优化
数据库优化专题—11、数据库结构优化
最近思考和摸索一些数据库优化内容,与大家分享下。
表的主键用数字还是UUID?
什么是UUID?
UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。
UUID由以下几部分的组合:
- 当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同;
- 时钟序列;
- 全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得;
为什么有人想要使用UUID?
在数据库集群中,为了避免每个Mysql各自生产的主键产生重复,所以有人考虑采用UUID方式。
UUID主键的好处
- 使用UUID分布式生成主键,减低全局节点的压力,使得主键生成速度更快;
- 使用UUID生成的主键值全局唯一;
- 跨服务器合并数据很方便;
UUID主键的缺点
- UUID占用16个字节,比4字节的INT类型和8字节的BIGINT类型更加占用存储空间;
- UUID是字符串类型,查询速度很慢;
- UUID不是顺序增长,作为主键,数据写入IO随机性很大;
主键自动增长优点
- INT和BIGINT类型占用存储空间较小;
- Mysql检索数字类型速度远远快过字符串;
- 主键自动增长,所以IO写入连续性较好;
分布式环境下的主键自动增长
- MyCat可提供全局主键生成(不重复增长);
总结
在业务条件允许下,尽量使用数字自增,效率更高。
更多推荐
已为社区贡献1条内容
所有评论(0)