InnoDB主键设计

Posted bcombettter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了InnoDB主键设计相关的知识,希望对你有一定的参考价值。

InnoDB是clustered-index table,因此对于InnoDB而言,主键具有特殊意义。可以通过主键直接定位到对应的某一数据行记录的物理位置,主键索引指向对应行记录,其他索引则都指向主键索引;因此,可以这么说,InnoDB其实就是一个 B-树索引,这棵B-树的索引就是主键,它的值则是对应的行记录。
在InnoDB数据表设计中,我们需要注意几点:

    • 1. 显式的定义一个 INT 类型自增字段的主键,这个字段可以仅用于做主键,不做其他用途
    • 2. 如果不显式定义主键的话,可能会导致InnoDB每次都需要对新数据行进行排序,严重损害性能
    • 3. 尽量保证不对主键字段进行更新修改,防止主键字段发生变化,引发数据存储碎片,降低IO性能
    • 4. 如果需要对主键字段进行更新,请将该字段转变成一个唯一索引约束字段,另外创建一个没有其他业务意义的自增字段做主键
    • 5. 主键字段类型尽可能小,能用SMALLINT就不用INT,能用INT就不用BIGINT
    • 6. 主键字段放在数据表的第一顺序

以上是关于InnoDB主键设计的主要内容,如果未能解决你的问题,请参考以下文章

mysql面试常考知识点

mysql面试常考知识点

innodb 存储引擎为啥要用一个自增的主键

深入浅出分析MySQL索引设计背后的数据结构

MySQL auto_increment的坑

mysql innodb存储引擎和myisam引擎