Day91【概念解析】 InnoDB Limits
行业概念

Day91【概念解析】 InnoDB Limits

· 约 1,199 字 · 阅读约 6 分钟
目录

😄 本文主要介绍下 InnoDB引擎中的一些最值。其中包含 InnoDB 表、索引、表空间和其他方面的最值限制。

整理定义

InnoDB Limits(InnoDB中的最值)

没有明确的行业含义,主要是对InnoDB引擎中的各个方面的值的限制进行整理和归纳说明。

参考原文【MySQL :: MySQL 8.0 Reference Manual :: 15.22 InnoDB Limits】

复述展开

表限制

  • 一个表最多可以包含1017列,包括虚拟生成列在内。

  • 一个表最多可以包含64个二级索引。

索引限制

  • 对于使用DYNAMIC或COMPRESSED行格式的InnoDB表,索引键前缀长度限制为3072字节。

  • 多列索引最多允许16列。超过限制会返回错误。

行限制

  • 对于 4KB、8KB、16KB 和 32KB 页面大小,最大行大小(不包括存储在页外的任何可变长度列)略小于页面的一半。 例如,默认 innodb_page_size 16KB 的最大行大小约为 8000 字节。 但是,对于 64KB 的 InnoDB 页大小,最大行大小约为 16000 字节。 LONGBLOB 和 LONGTEXT 列必须小于 4GB,并且总行大小(包括 BLOB 和 TEXT 列)必须小于 4GB。

  • 虽然InnoDB内部支持大于65535字节的行大小,但MySQL本身对所有列的组合大小施加了65535字节的行大小限制。

文件限制

  • 在一些较旧的操作系统上,文件必须小于2GB。这不是InnoDB的限制。如果你需要一个大型的系统表空间,请使用几个较小的数据文件而不是一个大型数据文件进行配置,或者将表数据分布在每个表的文件和通用表空间数据文件中。

  • InnoDB日志文件的组合最大为512GB。

表空间限制

  • 最小表空间的容量略大于10MB。最大表空间的容量取决于InnoDB页面的大小。

  • 一个 InnoDB 实例最多支持 2^{32} (4294967296) 个表空间,其中少量表空间保留用于撤消表和临时表。

  • 共享表空间最多支持 2^{32} (4294967296) 个表。

  • 表空间文件的路径(包括文件名)不能超过 Windows 上的 MAX_PATH 限制。 在 Windows 10 之前,MAX_PATH 限制为 260 个字符。 从 Windows 10 版本1607 开始,常见 Win32 文件和目录函数中删除了 MAX_PATH 限制,但必须启用新行为。

理解体会

本章整理了下InnoDB引擎的表、索引、文件、行、表空间的限制值,作为平时使用时稍加注意。

这些限制是由InnoDB的内部结构和MySQL数据库的设计决定的。了解这些限制对于数据库架构设计和性能优化至关重要。

最后整理了一个表格,用于快速记录:

相关文章