`

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表设计优化】是数据库管理中的一个重要环节,它涉及到如何提高数据存取效率、降低存储开销以及提升系统整体性能。在这个案例中,我们看到一个使用InnoDB引擎的MySQL表在进行随机插入操作时,性能出现了显著...

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

    在MySQL的InnoDB存储引擎中,主键是一个至关重要的概念,因为它对于数据的组织和查询效率有着直接影响。这里我们深入探讨为什么InnoDB必须要有主键,以及为什么推荐使用自增整型主键。 首先,InnoDB存储引擎依赖于...

    MySQL Innodb 索引原理详解

    InnoDB支持多种索引类型,包括主键索引、唯一索引、普通索引等。其中,主键索引是最常见的索引类型。 ##### 2.1 主键索引 主键索引是基于主键列构建的B+树索引,其中每个叶子节点存储完整的行记录。主键索引提供了...

    MyISAM与InnoDB的索引差异

    MySQL中的存储引擎MyISAM和InnoDB在处理...InnoDB的索引与数据行合一,提供了更快的主键查询,但对主键的选择和插入操作的顺序敏感。在实际应用中,选择哪种存储引擎和索引策略应根据业务需求和性能优化的目标来决定。

    MySql Innodb 引擎特性详解

    2. **优化主键设计**:选择尽可能小的主键类型,并确保索引尽可能小,以提高索引效率。 3. **避免全表扫描**:通过创建合适的索引来减少全表扫描的机会,降低锁定范围,提高查询性能。 4. **充分利用缓存**:...

    innodb_ruby-master.zip

    InnoDB以表为单位组织数据,采用聚集索引(Clustered Index)的概念,主键值决定了数据行的位置。非聚集索引(Secondary Index)则指向主键,而非数据本身。了解这一特性有助于优化索引设计,降低I/O操作。 2. ...

    py_innodb_page_info工具

    总的来说,`py_innodb_page_info`是MySQL数据库管理员和开发者的得力助手,它提供了深入理解InnoDB存储引擎内部运作的工具,使我们能够更好地调试问题、优化性能和设计更高效的数据模型。通过学习和使用这个工具,...

    关于InnoDB的索引大小

    InnoDB主要使用B+树(B-tree)作为索引的数据结构,无论是主键索引还是辅助索引。B+树的特点是所有数据都存储在叶子节点上,非叶子节点只存储指向叶子节点的指针,这使得搜索效率较高。索引项包含键值和对应的行指针...

    InnoDB官方文档中文翻译版

    InnoDB是MySQL数据库管理系统中的一个核心存储引擎,尤其在处理事务处理和数据一致性方面表现出色。这份官方文档的中文翻译版提供...通过深入学习,你可以更好地理解InnoDB的工作原理,从而更高效地设计和管理数据库。

    InnoDB 中文参考手册(CHM)

    通过《InnoDB 中文参考手册》,读者可以学习到如何有效地设计和管理InnoDB表,优化查询,配置存储参数,以及解决常见的性能问题。这是一份不可或缺的参考资料,无论你是数据库新手还是经验丰富的DBA,都能从中获益匪...

    py_innodb_page_info.zip

    7. **记录**:InnoDB中的记录包含了实际的数据字段,每个记录有自己的头信息,如记录长度、主键值等。记录在页内的布局直接影响查询性能。 8. **分析过程**:使用`py_innodb_page_info`工具,用户可以读取InnoDB的 ...

    MySql innodb 引擎表存储分析

    因此,每张InnoDB表必须有一个主键,如果没有显式定义,则InnoDB会自动生成一个隐式主键。 - **主键的选择与创建**: - 如果表中存在唯一且非空的索引,则该索引将被用作主键。 - 如果不存在这样的索引,则InnoDB...

    InnoDB源码解析

    标题“MySQL的InnoDB引擎架构设计与分析”中涉及的知识点主要围绕MySQL数据库的InnoDB存储引擎,其中“架构设计与分析”指示我们对InnoDB的内部结构和工作机制进行深入的探讨。具体来说,以下为InnoDB存储引擎的核心...

    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,更重要的是,它能为你设计和管理高性能、高可用的数据库系统提供绝佳的指导。...

    MySQL内核:InnoDB存储引擎 卷1.pdf.zip

    深入学习《MySQL内核:InnoDB存储引擎 卷1》,读者可以了解到InnoDB的内部工作机制,如如何处理B+树索引、事务的提交与回滚、锁的实现以及内存管理等内容,这对于优化数据库性能、解决并发问题、设计高效的数据模型...

Global site tag (gtag.js) - Google Analytics