Limits on Table Size The effective maximum table size for MySQL databases is usually determined by operating system constraints on file sizes, not by MySQL internal limits. For up-to-date information operating system file size limits, refer to the documentation specific to your operating system. Windows users, please note that FAT and VFAT (FAT32) are  not  considered suitable for production use with MySQL. Use NTFS instead. If you encounter a full-table error, there are several reasons why it might have occurred: •The disk might be full. •You are using  InnoDB  tables and have run out of room in an  InnoDB  tablespace file. The maximum tablespace size is also the maximum size for a table. For tablespace size limits, see Section 15.22, “InnoDB Limits” . •You have hit an operating system file size limit. For example, you are using  MyISAM  tables on an operating system that supports files only up to 2GB in size and you have hit this limit for the data file or index file. •You are using a  MyISAM  table and the space required for the table exceeds what is permitted by the internal pointer size.  MyISAM  permits data and index files to grow up to 256TB by default, but this limit can be changed up to the maximum permissible size of 65,536TB (256$^{7}$  − 1 bytes). Generally, partitioning of tables into multiple tablespace files is recommended for tables larger than 1TB in size. If you need a  MyISAM  table that is larger than the default limit and your operating system supports large files, the  CREATE TABLE  statement supports  AVG_ROW_LENGTH  and  MAX_ROWS  options. See Section 13.1.20, “CREATE TABLE Statement” . The server uses these options to determine how large a table to permit. If the pointer size is too small for an existing table, you can change the options with  ALTER TABLE  to increase a table’s maximum permissible size. See Section 13.1.9, “ALTER TABLE Statement” . You have to specify  AVG_ROW_LENGTH  only for tables with  BLOB  or  TEXT  columns; in this case, MySQL cannot optimize the space required based only on the number of rows. To change the default size limit for  MyISAM  tables, set the  myisam_data_pointer_size , which sets the number of bytes used for internal row pointers. The value is used to set the pointer size for new tables if you do not specify the  MAX_ROWS  option. The value of  myisam_data_pointer_size  can be from 2 to 7. For example, for tables that use the dynamic storage format, a value of 4 permits tables up to 4GB; a value of 6 permits tables up to 256TB. Tables that use the fixed storage format have a larger maximum data length. For storage format characteristics, see Section 16.2.3, “MyISAM Table Storage Formats” . You can check the maximum data and index sizes by using this statement: You also can use  myisamchk -dv /path/to/table-index-file . See Section 13.7.7, “SHOW Statements” , or Section 4.6.4, “myisamchk — MyISAM Table-Maintenance Utility” . Other ways to work around file-size limits for  MyISAM  tables are as follows: •If your large table is read only, you can use  myisampack  to compress it.  myisampack  usually compresses a table by at least 50%, so you can have, in effect, much bigger tables.  myisampack SHOW TABLE STATUS FROM  db_name  LIKE ’ tbl_name ’; ALTER TABLE  tbl_name  MAX_ROWS=1000000000 AVG_ROW_LENGTH= nnn ; 1742