MySQL数据库的有效最大表大小通常取决于操作系统对文件大小的限制,而不是MySQL内部限制。有关操作系统文件大小限制的最新信息,请参阅特定于您的操作系统的文档。10bet官方网站
Windows用户,请注意FAT和VFAT (FAT32)是不被认为适合与MySQL一起生产使用。而是使用NTFS。
如果您遇到了一个全表错误,可能有以下几个原因:
磁盘可能已满。
您正在使用
InnoDB
桌子和房间都用完了InnoDB
表空间文件。最大表空间大小也是表的最大大小。有关表空间大小限制,请参见第15.22节,“InnoDB限制”.通常,对于大于1TB的表,建议将表划分为多个表空间文件。
您已达到操作系统文件大小限制。例如,你正在使用
MyISAM
表在一个操作系统上,它只支持2GB大小的文件,并且您已经达到了数据文件或索引文件的这个限制。您正在使用
MyISAM
表和表所需的空间超过了内部指针大小所允许的空间。MyISAM
默认情况下允许数据和索引文件增长到256TB,但是这个限制可以更改为允许的最大大小为65,536TB (2567−1字节)。如果你需要
MyISAM
表的值大于默认限制,并且您的操作系统支持大文件创建表
声明支持AVG_ROW_LENGTH
而且MAX_ROWS
选项。看到第13.1.20节," CREATE TABLE语句".服务器使用这些选项来决定允许多大的表。如果指针的大小对现有表来说太小,您可以用
ALTER TABLE
增加表允许的最大大小。看到第13.1.9节,“ALTER TABLE语句”.ALTER TABLEtbl_nameMAX_ROWS = 1000000000 AVG_ROW_LENGTH =nnn;
你必须指定
AVG_ROW_LENGTH
仅限有团
或文本
列;在这种情况下,MySQL不能仅根据行数优化所需的空间。更改的默认大小限制
MyISAM
表、设置myisam_data_pointer_size
,它设置内部行指针使用的字节数。属性时,该值用于设置新表的指针大小MAX_ROWS
选择。的价值myisam_data_pointer_size
取值范围为2 ~ 7。例如,对于使用动态存储格式的表,值4允许表的最大容量为4GB;值6允许表的最大容量为256TB。使用固定存储格式的表有更大的最大数据长度。有关存储格式特征,请参见第16.2.3节,“MyISAM表存储格式”.你可以用下面的语句检查最大数据和索引大小:
显示表状态db_name像‘tbl_name”;
你也可以用myisamchk dv /路径/ / table-index-file.看到第13.7.7节,“SHOW语句”,或章节4.6.4,“myisamchk - MyISAM表维护工具”.
的文件大小限制的其他方法
MyISAM
各表如下:如果您的大表是只读的,您可以使用myisampack压缩它。myisampack通常将表压缩至少50%,因此实际上可以拥有更大的表。myisampack也可以将多个表合并为单个表。看到myisampack -生成压缩的,只读的MyISAM表.
MySQL包括一个
合并
的集合,使您能够处理MyISAM
具有与单个表相同结构的表合并
表格看到第16.7节“MERGE存储引擎”.
您正在使用
内存
(堆
)存储引擎;在本例中,您需要增加max_heap_table_size
系统变量。看到第5.1.8节,“服务器系统变量”.