我想在 MySQL 中创建一个 MyISAM 表(尝试了 5.0.x 和 5.1.x 的各种版本),它允许超过 2^32 行。实现这一点的方法是让 MySQL 使用 8 字节而不是 4 字节的行指针。
这是 MySQL 手册的引述:
如果您使用 --with-big-tables 选项构建 MySQL,则行限制增加到 1.844E+19 行。请参见第 2.3.2 节,“典型配置选项”。Unix 和 Linux 的二进制发行版是使用此选项构建的。
听起来很简单,对吧?但是我已经尝试了 Linux x86_64 的各种二进制发行版,并且还使用“--with-big-tables”选项从源代码构建 MySQL。在每种情况下,我仍然无法超出 2^32 的限制。我这样创建一个表:
CREATE TABLE big (col int) MAX_ROWS=1099511627776
当我检查表状态时,它说:
Create_options: max_rows=4294967295
如何逃离 32 位炼狱?使用 InnoDB 可能会解决问题,但对于我正在运行的查询类型,它的执行速度要慢得多。
仅供参考,这是一个没有解决问题的重要参考: