MySQL的表上限
一、行数的上限
1、官方文档
There is a limit of (2^32)^2 (1.844E+19) rows in a MyISAM table.
这是MySQL的行数的理论上限,但实际上是达不到的
2、myisam_data_pointer_size
限制
实际行数上限还受myisam_data_pointer_size
限制,64位的mysql的myisam_data_pointer_size
通常是6,即48位,行数是2^48 - 1 = 281474976710655。
3、存储空间的限制
表的存储空间大小限制(Storage limits):256TB。
所以只要知道最小一行需要的空间,就能求出最多能存的记录数。
二、列数的限制
MySQL对于每个表具有4096个列的硬限制,但给定表的有效最大值可能较少。精确的列限制取决于几个因素:
-
表的最大行大小限制列的数量(可能是大小),因为所有列的总长度不能超过此大小。请参阅行大小限制
-
单个列的存储要求限制了适合给定最大行大小的列数。某些数据类型的存储要求取决于存储引擎,存储格式和字符集等因素。请参见数据类型存储要求
-
存储引擎可能会施加限制表列计数的额外限制。例如, InnoDB每个表的限制为1017列。请参见对InnoDB表的限制有关其他存储引擎的信息,请参见替代存储引擎
-
每个表都有一个.frm包含表定义的文件。该定义以可能影响表中允许的列数的方式影响此文件的内容。请参见.frm文件结构引起的限制