MySQL 单表的记录数不能超过 2 千万的原因是因为 MySQL 使用的是 MyISAM 存储引擎,MyISAM 在存储数据时使用了索引文件来维护数据的顺序。这个索引文件是由多个碎片组成的,每个碎片的大小为 1GB,所以单个 MyISAM 表最多可以存储 2GB 的数据。由于每条记录占用空间都是固定的,所以 MyISAM 表最多可以存储的记录数也是固定的,大约是 2 千万条。
需要注意的是,如果你使用的是 MySQL 的 InnoDB 存储引擎,那么单个表的记录数是没有限制的。 InnoDB 使用的是 B+ 树索引,每个节点都存储了数据,所以 InnoDB 表的记录数是不受限制的。