14.23 InnoDB 限制

本节描述InnoDBtable,索引,table 空间和InnoDB存储引擎的其他方面的限制。

innodb_large_prefix已过时,将在以后的版本中删除。 MySQL 5.5 中引入了innodb_large_prefix,以禁用大索引键前缀,以与不支持大索引键前缀的InnoDB的早期版本兼容。

对于使用REDUNDANTCOMPACT行格式的InnoDB个 table,索引键前缀长度限制为 767 个字节。例如,假设utf8mb3字符集且每个字符最多 3 个字节,则您可能会在TEXTVARCHAR列上使用超过 255 个字符的column prefix索引来达到此限制。

尝试使用超出限制的索引键前缀长度将返回错误。为避免复制配置中出现此类错误,如果无法同时在副本上启用innodb_large_prefix,则避免在源上启用innodb_large_prefix

如果在创建 MySQL 实例时通过指定innodb_page_size选项将InnoDB page size减小为 8KB 或 4KB,则基于 16KB 页面大小的 3072 字节限制,按比例减小索引键的最大长度。即,当页面大小为 8KB 时,最大索引键长度为 1536 字节,而当页面大小为 4KB 时,最大索引键长度为 768 字节。

适用于索引键前缀的限制也适用于全列索引键。

ERROR 1070 (42000): Too many key parts specified; max 16 parts allowed

如果一行的长度小于一页的一半,则所有行都将存储在本地页面内。如果它超过一页的一半,则将选择可变长度的列用于外部页外存储,直到该行适合在一页的一半之内,如第 14.12.2 节“文件空间 Management”中所述。

table14.25 InnoDB 最大 table 空间大小

InnoDB 页面大小 最大 table 空间大小
4KB 16TB
8KB 32TB
16KB 64TB
32KB 128TB
64KB 256TB

最大 table 空间大小也是 table 的最大大小。

首页