登录
首页 >  数据库 >  MySQL

MySQL数据库表各种大小限制小结

来源:SegmentFault

时间:2023-01-22 13:42:37 472浏览 收藏

积累知识,胜过积蓄金银!毕竟在##column_title##开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《MySQL数据库表各种大小限制小结》,就带大家讲解一下MySQL知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

本文所有条目总结均来自mysql5.6的官网英文文档:

table-size-limit

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

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)

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 Size
4KB16TB
8KB32TB
16KB64TB

参考1: Limits on Table Column Count and Row Size

image.png

参考2: Limits on Table Size

文中关于mysql的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《MySQL数据库表各种大小限制小结》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表