Day91【概念解析】 InnoDB Limits
目录 ▼
😄 本文主要介绍下 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数据库的设计决定的。了解这些限制对于数据库架构设计和性能优化至关重要。
最后整理了一个表格,用于快速记录: