mysql表空间限制_MySQL数据库表各种⼤⼩限制⼩结
本⽂所有条⽬总结均来⾃mysql5.6的官⽹英⽂⽂档:
1. MySQL表的列数限制
1.1 MySQL硬性限制每个表最⼤4096个列
1.2 InnoDB存储引擎的约束: 每个表最⼤1017个列;
2. MySQL表的每⾏数据的限制
2.1 MySQL表限制row size最⼤ 65535个字节
2.2 InnoDB限制row size最⼤半页, 默认页⼤⼩16K, 也就是 row size < 8K;
3. MySQL表总数据量的限制
3.1 ⼀个表的总⼤⼩限制取决于操作系统的⽂件限制
1) windows fat32的话, 最⼤就是4G如果要想超过4G, 在64位windows上使⽤NTFS ;
2) 其他的windows上的⽂件数的限制等在Windows上,表空间⽂件的路径(包括⽂件名)不能超过MAX_PATH限制。
在Windows 10之前,MAX_PATH的限制是260个字符。从Windows 10 1607版本开始,常见的Win32⽂件和⽬录函数中删除了
MAX_PATH限制,但是必须启⽤新的⾏为。
3.2 默认MyISAM数据和索引⽂件最⼤到256TB,但此限制可改为最⼤65536TB
3.3 InnoDB的表⼤⼩限制:64T(取决于页⼤⼩, 详见下5)
mysql帮助文档4. MySQL数据库的表个数:⽆限制(InnoDB允许40亿个表)
MySQL对表的数量没有限制。
底层⽂件系统可能对表⽰表的⽂件数量有限制。
单个存储引擎可能会施加特定于引擎的约束: InnoDB允许多达40亿个表
5. 综上-总结InnoDB的限制
5.1 MySQL5.6以后允许InnoDB表最多1017个列
5.2 ⼀个InnoDB表最多允许64个⼆级索引
5.3 默认索引前缀长度最多767bytes
5.4 联合索引最多允许16个列, 多了报错
5.5 InnoDB的最⼤⾏⼤⼩为半页(⼩于8K-默认)
由于默认页⼤⼩为16K, 要求是⼩于half page size, 就是⼩于8K;
innodb_page_size可以通过这个修改为4K, 8K; 这样的话, rowsize 就限制为⼩于 2K, 4K了;虽然InnoDB内部⽀持⼤于65,535字节的⾏⼤⼩,但MySQL本⾝对所有列的合并⼤⼩施加了65,535的⾏⼤⼩限制。-?跨页?另设置?
5.6 innoDB⽇志⽂件的最⼤组合⼤⼩是512G
5.7 InnoDB表空间⼤⼩限制64T(表空间最⼤⼤⼩也是表的最⼤⼤⼩)
最⼩表空间⼤⼩略⼤于10MB
最⼤表空间⼤⼩取决于InnoDB的页⾯⼤⼩:InnoDB Page SizeMaximum Tablespace Size4KB16TB
8KB32TB
16KB64TB