MySQL数据库单一表突破4G限制的实现方法

MySQL数据库单一表突破4G限制的实现方法,第1张

MySQL数据库单一表突破4G限制的实现方法,第2张

一个Discuz!老用户论坛在回复时出现“表已满”的提示,字面意思是数据表已满。因为很少有开发者遇到单桌超过4G的情况,朋友间的讨论只能提供一些外围信息。为了解决这个问题,我看了很多资料。本文将结合我的解决过程介绍这一问题的原因和对策。
根据经验,表已满提示通常出现在以下两种情况:

1.MAX_ROWS值在表中设置。简单来说,如果MAX_ROWS设置为100,程序试图写入第101条记录,就会出现这个错误。

2.桌子满了。这种情况是本文的重点。

我们认为MySQL在访问表时有一个位置分配规则。默认情况下,该规则可以处理4G以内的数据。超过这个大小,数据库将无法定位数据,所以它不能读或写。经过实验,这种限制完全可以被打破。

在这个例子中,用户的系统环境是双Athlon处理器,SCSI硬盘72G,2G内存,用户post表的数据大小是4294963640,接近4G(实际字节数4294967296)。

首先,在SSH登录之后,检查用户的系统信息:

# uname -a

Linux zichen.com 2 . 4 . 20-8 SMP # 1 SMP 3月13日星期四16:43:01 EST 2003 i686 athlon i386 GNU/Linux

证明是Linux系统。根据内核版本2.4.20-8smp,加上国内常用的系统,估计应该是redhat 9发行包。

#卡特彼勒/etc/*版本*

Red Hat Linux release 9 (Shrike)

这也证明了我们关于系统版本的猜想。

然后看一下使用的是什么文件系统。因为这个用户不是高手,估计系统装上的时候就是一路回车了。redhat 9的默认应该是EXT3,不过我们来看看:

#分开

GNU Parted 1.6.3

版权所有(C) 1998、1999、2000、2001、2002自由软件基金会。

这个程序是自由软件,受GNU通用公共许可证保护。

分发这个程序是希望它有用,但没有任何保证;甚至没有暗示的保证

适销性或对特定目的的适用性。更多细节请参见GNU通用公共许可证。

使用/dev/sda

信息:操作系统认为/dev/sda上的几何是8942/255/63。因此,圆柱体1024在8032.499米处结束

(分开的)印刷品

/dev/sda的磁盘几何:0.000-70149.507兆字节

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » MySQL数据库单一表突破4G限制的实现方法

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情