我想在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可能会解决问题,但对于我正在运行的查询类型,它的执行速度要慢得多.
仅供参考,这是一个没有解决问题的重要参考: