技术解读 MySQL InnoDB 大对象存储格式

💡 原文中文,约7700字,阅读约需19分钟。
📝

内容提要

本文介绍了InnoDB大对象的存储格式,包括内联存储和溢出页存储。溢出页存储的条件是记录长度超过页面长度。文章总结了InnoDB对大对象的组织管理方式。

🎯

关键要点

  • 本文介绍了InnoDB大对象的存储格式,包括内联存储和溢出页存储。

  • 在MySQL中,大字段被称为大对象(LOB),通常不会高频全量访问。

  • InnoDB对大对象的存储形式主要有两种:内联存储和溢出页存储。

  • 溢出页存储的条件是记录长度超过8126个字节。

  • 溢出页存储的过程包括判断字段类型和长度,选择合适的字段进行存储。

  • 大对象溢出页存储示例展示了不同情况下字段的存储行为。

  • 大对象引用字段(LOB ref)在主键记录中存储大对象的引用,而非实际数据。

  • 溢出页的格式包括first page和data page,first page用于管理数据的访问和更新。

  • index page用于管理超过10个页面的LOB字段,包含index entry以便快速访问。

  • 总结了InnoDB对大对象的存储格式和管理方式,后续将介绍大对象的更新和查询方式。

延伸问答

InnoDB大对象的存储格式有哪些类型?

InnoDB大对象的存储格式主要有内联存储和溢出页存储两种类型。

什么情况下会使用溢出页存储?

当记录长度超过8126个字节时,会使用溢出页存储。

大对象引用字段LOB ref的作用是什么?

LOB ref用于在主键记录中存储大对象的引用,而非实际数据,以便InnoDB找到数据存储的真实位置。

InnoDB如何管理大对象的溢出页?

InnoDB通过first page和data page的结构来管理溢出页,first page用于描述数据和管理访问,data page存储真实数据。

在什么情况下大对象不会被存储到溢出页?

如果字段是固定长度、为NULL、长度小于等于40个字节或为非大对象类型,则不会被存储到溢出页。

InnoDB大对象的存储格式对性能有什么影响?

InnoDB通过优化大对象的存储格式,提高了聚簇索引中数据行的访问效率,从而提升了性能。

➡️

继续阅读