设为首页
加为收藏
联系我们
  • 电子商务
  • 软件网络
  • 看天下
  • 营销财经
  • 关闭导航
  • 网络编程
  • 数据库类
  • 关闭导航
  • 网络编程
  • 社交礼仪
  • 数据库类
  • 人文地理
  • 关闭导航
  • 编程工具
  • 电子书籍
  • 关闭导航
  • 生活休闲
  • 演讲讲座
  • 视频教程
  • 经典影视
  • 关闭导航
  • 您的位置: 首页 > 入门教程 > 数据库类 > MySQL

    突破MySQL单一表4G限制

    时间: 2008-09-02  信息来源: IT专家网  作者: 编辑整理  点击数:

    内容提示:MySQL出现“The table is full”的提示,字面意义上是数据表已满的意思,事实上有两种可能性:
    1. 表中设置了MAX_ROWS值,简单的说,若MAX_ROWS设置为100,而程序试图写入第101条记录,会出现此错误。
    2. 表满。这种情况是本文讨论的重点

        因为这个表非常大,执行时间在双Athlon的专业服务器上竟然花了30分钟!之后再通过myisamchk查看该表的信息:

     # myisamchk -dv cdb_posts
      MyISAM file: cdb_posts
      Record format: Packed
      Character set: latin1 (8)
      File-version: 1
      Creation time: 2004-08-30 22:19:48
      Recover time: 2004-08-30 22:42:47
      Status: open,changed
      Auto increment key: 1 Last value: 1063143
      Data records: 619904 Deleted blocks: 5
      Datafile parts: 619909 Deleted data: 323872
      Datafile pointer (bytes): 6 Keyfile pointer (bytes): 4
      Datafile length: 4295287332 Keyfile length: 40421376
      Max datafile length: 281474976710654 Max keyfile length: 4398046510079
      Recordlength: 149
      table description:
      Key Start Len Index Type Rec/key Root Blocksize
      1 1 4 unique unsigned long 1 4535296 1024
      2 5 2 multip. unsigned short 13776 12540928 1024
      3 111 4 multip. unsigned long 1 18854912 1024
      4 28 3 multip. uint24 18 24546304 1024
      5 7 3 multip. uint24 7 32827392 1024
      111 4 unsigned long 1
      6 7 3 multip. uint24 7 40418304 1024
      28 3 uint24 
     

      令人振奋的事情发生了,该表的 Max datafile length: 281474976710654 Max keyfile length: 4398046510079,即最大数据尺寸(MYD文件)达到了2TB,最大索引尺寸(MYI)仍然为4G。
      由此默认的4G限制被突破了。关于其中的原理,其实很简单:假设你有一个日记本,上面有10页纸可以写东西,编排目录只需要1个字节(因为0~9就够了)。如果你把这本子又塞进两张纸,变成12页,1个字节的目录空间就无法寻址到后面的两页中,进而产生了错误。上面那个ALTER语句中的数值都是我为保证成功,取的比较大的值(因为ALTER一次实在是太慢了,没时间在那乱试验),相当于告诉数据库,这个本子有1000000000页,每页平均有15000个字节。这样数据库便知道这是很大的一个本子,因此不遗余力的拿出了100页(假设说)做目录编排,这样这个新的目录就可以寻址到日记本的所有内容了。错误消失。
      惟一的缺点就是,目录占用的空间多了一些,但已经微乎其微了,做了这种改变其实4G的文件尺寸大小只增大了1M多,非常令人振奋。

     
    Tags: MySQL,单表,4G 责任编辑:aboutstudy
     
      关于我们 友情链接 网站地图 广告服务 联系我们 管理登陆  
      鄂ICP备07014143号  
      Powered by EmpireCMS 5.0  
      Template designed by 直来直往.
      联系信息: QQ 365931563 Email:jiangtian001@sina.com  
      ©CopyRight 2007-2008, SKDE.CN, Inc. All Rights Reserved