MySQL数据库限制研究

对数据库和表格数量的限制


MySQL对数据库的数量没有限制。基础文件系统可能对目录的数量有限制。
MySQL对表的数量没有限制。基础文件系统可能对表示表的文件数量有限制。单个存储引擎可能会施加特定于引擎的约束。InnoDB允许多达40亿张表格


表列计数和行大小的限制


列计数极限
1.MySQL的硬限制是每个表的列数为4096列,但对于给定的表,有效的最大值可能较小。
1.1表的最大行大小限制列的数目(可能是大小),因为所有列的总长度不能超过此大小。
1.2各个列的存储要求限制在给定的最大行大小内的列数。某些数据类型的存储需求取决于存储引擎、存储格式和字符集等因素。
1.3存储引擎可能会施加其他限制,限制表列计数。

行大小限制
2.1MySQL表的内部表示有65,535字节的最大行大小限制,即使存储引擎能够支持更大的行。BLOB和TEXT列只向行大小限制贡献9到12个字节,因为它们的内容与行的其余部分是分开存储的。
2.2对象的最大行大小。InnoDB适用于存储在数据库页中的本地数据的表略小于半页。例如,对于默认的16 KB,最大行大小略小于8KB。

MySQL最大行大小限制为65,535字节,如下所示InnoDB和MyISAM例子。尽管存储引擎可以支持更大的行,但无论存储引擎是什么,限制都是强制的。
列长度在65,535字节的最大长度之内,但需要另外两个字节来记录长度,这将导致行大小超过65,535字节:,也就是最大65533字节

InnoDB限制


1.表最多可以包含1000列
2.表最多可以包含64二级索引
3.默认情况下,索引键前缀长度限制为767字节
4.对于multicolumn 索引,最多允许有16列
5.最大行大小(不包括页外存储的任何可变长度列)略小于页的一半。也就是说,最大行大小约为8000字节。LONGBLOB和LONGTEXT列必须小于4GB,并且行的总大小包括BLOB和TEXT列必须小于4GB。
6.尽管InnoDB在内部支持大于65,535字节的行大小,MySQL本身对所有列的合并大小施加了65,535行大小的限制
7.在一些旧操作系统上,文件必须小于2GB
8.InnoDB日志文件的最大合并大小为4GB
9.最小表空间大小略大于10 MB。最大表空间大小为64 TB,这也是表的最大大小
10.表空间文件的路径(包括文件名)不能超过MAX_PATH对Windows的限制。在Windows 10之前,MAX_PATH限制为260个字符。从Windows 10版本1607开始,MAX_PATH公共Win 32文件和目录函数中的限制被删除,但是您必须启用新的行为。


使用程序分析


ANALYSE([max_elements[,max_memory]])
ANALYSE()检查查询的结果,并返回对结果的分析,为每一列建议最佳的数据类型,这些数据类型可能有助于减少表的大小。若要获得此分析,请追加PROCEDURE ANALYSE直到SELECT声明:

SELECT ... FROM ... WHERE ... PROCEDURE ANALYSE([max_elements,[max_memory]])

参考:https://dev.mysql.com/doc/refman/5.5/en/column-count-limit.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章