数据库优化专题—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可提供全局主键生成(不重复增长);

总结

在业务条件允许下,尽量使用数字自增,效率更高。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐