美文网首页
Mysql表用自增主键的选型

Mysql表用自增主键的选型

作者: 水煮鱼又失败了 | 来源:发表于2020-05-21 08:38 被阅读0次

    目录

    [TOC]

    1. 版本说明

    基于mysql版本:5.6.27

    mysql数据库引擎:InnoDb

    2. 说明

    InnoDb的索引特性,导致的自增id做主键是效率最高的。

    • 存储上自增id占用的存储空间比uui小。
      • InnoDb在存在主键的情况下,使用主键建立聚簇索引,InnoDb的聚簇索引建立的B+树节点,索引和数据在一起(对应的数据为主键内容),通过节点中存储的主键进行关联行数据信息而二级索引信息。
      • uuid占用空间比自增主键大,会导致建立的索引占用空间大,检索慢。
    • 在存储和检索的时候,InnoDb会对主键进行物理排序
      • 自增主键后插入的主键位置总是在最后。
      • uuid是随机生成的,每次插入的主键位置是不确定的,会进行主键的物理排序,会造成大量的IO操作,从而影响数据库效率。
      • uuid在数据大量插入的时候,读写性能下降非常厉害。同时因为数据的物理重新排序,会生成大量的磁盘碎片,占用磁盘空间。

    3. 场景选型

    • 单节点情况下,主键生成策略首选自增ID,性能高于uuid,磁盘占用少。
    • 分布式架构场景,可以在购买较多存储、降低部分性能的基础上,使用uuid。从而减少主键的生成成本(存在多个分布式写库的时候,使用自增主键的情况下,为了避免多个库之间主键生成重复,将耗费大量的技术成本)。

    相关文章

      网友评论

          本文标题:Mysql表用自增主键的选型

          本文链接:https://www.haomeiwen.com/subject/dhfbohtx.html