10bet官方网站文档家里
MySQL 5.7参考手册
相关的文档10bet官方网站 下载本手册 本手册摘录

14.23 InnoDB限制

本节介绍限制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字节。LONGBLOBlongtext.列必须小于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节,“撤销日志”