本节介绍限制Innodb.
的表、索引、表空间和其他方面Innodb.
存储引擎。
表最多可以包含1017列(在MySQL 5.6.9中提出,从早期的限制为1000)。虚拟生成的列包含在此限制中。
一个表最多可以包含64个字符二级索引。
如果
innodb_large_prefix
已启用(默认值),索引密钥前缀限制为3072字节Innodb.
使用动态
或者压缩
行格式。如果innodb_large_prefix
禁用,则任何行格式的表的索引键前缀限制为767字节。innodb_large_prefix
不推荐使用;预计它将在未来的MySQL发布中删除。innodb_large_prefix
在MySQL 5.5中引入,禁用大型索引密钥前缀,以与早期版本的兼容性Innodb.
不支持大索引键前缀。索引密钥前缀长度限制为767字节
Innodb.
使用冗余
或者袖珍的
行格式。例如,你可能会碰到a的极限列前缀超过255个字符的索引文本
或者varchar.
专栏,假设aUTF8MB3.
字符集和每个字符的最多3个字节。尝试使用超过限制的索引密钥前缀长度返回错误。要避免复制配置中的此类错误,请避免启用
innodb_large_prefix
如果不能在副本上启用,则在源上启用。如果你减少了
Innodb.
页面大小参数的取值为8KB或4KBinnodb_page_size.
选项创建MySQL实例时,索引键的最大长度会按比例降低,基于16KB页面大小的3072字节限制。也就是说,当页面大小为8KB时,最大索引键长度为1536字节,当页面大小为4KB时,最大索引键长度为768字节。适用于索引键前缀的限制也适用于全列索引键。
多列索引最多允许有16个列。超过限制将返回错误。
错误1070(42000):指定的关键部件太多;最多16份允许
对于4KB、8KB、16KB和32KB的页面大小,最大行大小(不包括页外存储的任何可变长度列)略小于页面的一半。例如,最大行大小为默认值
innodb_page_size.
16KB的约为8000个字节。但是,对于一个Innodb.
页大小为64KB时,最大的行大小约为16000字节。LONGBLOB
和longtext.
列必须小于4GB,总行大小,包括团
和文本
列,必须小于4GB。如果一行长于半页的一半,则所有内容都存储在页面内。如果超过一半页面,则选择可变长度列用于外部非页面存储,直到行为一部分,如此第14.12.2节,“文件空间管理”。
虽然
Innodb.
在内部支持大于65,555个字节的行大小,MySQL本身对所有列的组合大小施加了65,535的行大小限制。看第8.4.7节,“表列计数和行大小的限制”。在一些较老的操作系统上,文件必须小于2GB。这不是一个
Innodb.
局限性。如果需要大型系统表空间,请使用几个较小的数据文件而不是一个大数据文件配置它,或者在按下文件/常规表空间数据文件中分发表数据。的组合最大大小
Innodb.
日志文件为512GB。最小表空间尺寸略大于10MB。最大表空间大小取决于
Innodb.
页面大小。表14.25 InnoDB最大表空间大小
InnoDB页面大小 最大的表空间大小 4KB. 16 tb 8 kb 32个结核病 16KB. 64TB. 32KB. 128TB. 64KB. 256TB. 最大表空间大小也是表的最大大小。
Windows 32位系统上的表空间文件不能超过4GB(Bug#80149)。
表空间文件的路径(包括文件名)不能超过
MAX_PATH
限制Windows。在Windows 10之前,MAX_PATH
限制是260个字符。从Windows 10的1607版本开始,MAX_PATH
一般Win32文件和目录函数的限制被删除了,但是您必须启用新的行为。row_format =压缩
在里面Barracuda.文件格式假定页面大小最多为16KB,并使用14位指针。对于与并发读写事务相关的限制,请参阅第14.6.7节,“撤销日志”。