`

InnoDB主键设计(老叶)

 
阅读更多

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

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

相关推荐

    为什么说InnoDB必须要有主键并且推荐使用自增整型主键呢?

    如果用户使用InnoDB存储引擎建立表的时候,没有指定主键,则Mysql会自动的帮你找到一个合适的唯一索引作为主键,若找不到符合条件唯一索引条件的字段时,会生成类似于ROW_ID的虚拟列充当该InnoDB表的主键;...

    从案例看InnoDB表设计优化

    从案例看InnoDB表设计优化

    Mysql innodb 存储引擎全揭秘

    Innodb 通过多版本并发控制(MVCC)来获得高并发...对于表中的数据innodb 采用聚集的方式,每张表的存储都是按主键的顺序存放,如果没有显式在表定义时指定主键,innodb 会为每一行生成一个6字节的rowid,并以此为主键。

    MySQL技术内幕 InnoDB存储引擎.pdf

    最近在学习MySQL技术内幕 InnoDB存储引擎 第2版,整理了一些文档分享出来,同时也方便以后查看。若有不当之处,烦请批评指正。 1. MySQL体系结构和存储引擎 2. InnoDB存储引擎 2.1 InnoDB体系结构 2.2 ...

    有关MySQL InnoDB在索引中自动添加主键的问题

    但如果用户的索引字段中没有完全包含主键字段,InnoDB会把剩下的主键字段加到索引末尾。  (二)例子  例子一: CREATE TABLE t (  a char(32) not null primary key,  b char(32) not null,  KEY ...

    mysql内核 innodb存储引擎

    内容深入,从源代码的角度深度解析了InnoDB的体系结构、实现原理、工作机制,并给出了大量最佳实践,能帮助你系统而深入地掌握InnoDB,更重要的是,它能为你设计和管理高性能、高可用的数据库系统提供绝佳的指导。...

    MyISAM InnoDB 区别

     4、从我接触的应用逻辑来说,select count(*) 和order by 是最频繁的,大概能占了整个sql总语句的60%以上的操作,而这种操作Innodb其实也是会锁表的,很多人以为Innodb是行级锁,那个只是where对它主键是有效,非...

    MySQL Innodb 索引原理详解

    MySQL Innodb 索引原理详解

    InnoDB 中文参考手册

    InnoDB 给 MySQL 提供了具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。InnoDB 提供了行锁(locking on row level),提供与 ...

    mysql 5.6 新特性-innodb

    mysql 5.6 新特性 innodb

    InnoDB官方文档中文翻译版

    InnoDB官方文档中文翻译版 InnoDB官方文档中文翻译版 InnoDB官方文档中文翻译版

    InnoDB怎么应对高并发

    (3)redo日志保证已提交事务的ACID特性,设计思路是,通过顺序写替代随机写,提高并发; (4)undo日志用来回滚未提交的事务,它存储在回滚段里; (5)InnoDB是基于MVCC的存储引擎,它利用了存储在回滚段里的undo日志,...

    innodb_ruby-master.zip

    MySQL分析 innodb

    MySQL 主键与索引的联系与区别分析

    索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。下面是主键和索引的一些区别与联系。 1. 主键一定是唯一性索引,唯一性索引并不一定就是主键。 所谓...

    03 用一次数据更新流程,初步了解InnoDB存储引擎的架构设计.pdf

    03 用一次数据更新流程,初步了解InnoDB存储引擎的架构设计.pdf

    InnoDB中文参考手册

    InnoDB 的设计目标是处理大容量数据库系统,它的 CPU 利用率是其它基于磁盘的关系数据库引擎所不能比的。 在技术上,InnoDB 是一套放在 MySQL 后台的完整数据库系统,InnoDB 在主内存中建立其专用的缓冲池用于高速...

    MyISAM与InnoDB的索引差异

    MyISAM和InnoDB都使用B+树来实现索引: ...• InnoDB的聚集索引存储数据行本身,普通索引存储主键 • InnoDB一定有且只有一个聚集索引 • InnoDB建议使用趋势递增整数作为PK,而不宜使用较长的列作为PK

    MyISAM引擎与InnoDB引擎性能的对比

    MyISAM引擎与InnoDB引擎性能的对比

    MySQL体系结构及原理(innodb)图文完美解析

    MySQL体系结构及原理(innodb)图文完美解析

    InnoDB事务-锁-MVCC

    InnoDB事务-锁-MVCC.pdf

Global site tag (gtag.js) - Google Analytics