操作系统和MyISAM存储引擎限制

OS: CentOS 32bit
File System: ext3
Mysql Version: 5.5.3m3 source code

今天做了数据插入测试,遇到mysql报错
1. OLTP测试的时候MyISAM引擎插入数据最多只能4719889条,Innodb则没有问题
报错:ALERT: Error 1114 The table 'sbtest' is full
FATAL: failed to create test table!

网上查了一下,有几个可能性,一一尝试:
(1) 设置SQL_BIG_TABLES

mysql> show variables like 'SQL_BIG_TABLES';
mysql> set SQL_BIG_TABLES ON;

没用!

 

(2) 修改系统/tmp 目录大小,参考http://dev.mysql.com/doc/refman/5.1/zh/problems.html A4.4
修改mysqld的 —tmpdir参数(bingo)
插入的行增加到512W,然后数据不增加,也不报错,Show Processlist 显示插入仍在运行


(3)MyISAM数据指针只有4Byte=32位,寻址范围=4G,所以MYD文件不能大于4294967296Byte
我实际的MYD文件大小5490000000Byte,已经超过这个范围了
官方文档显示:

● Large files (up to 63-bit file length) are supported on file systems and operating systems that support large files.

● There is a limit of (232)2 (1.844E+19) rows in a MyISAM table.

所以虽然可能和MyISAM有关系,但是应该也不是MyISAM的限制。


(4)操作系统单文件大小限制
查了ext3文件系统,默认block设置为1KByte的时候,单文件最大可达到16GByte,所以也排除这个可能性

 

总结:最后发现虽然数据目录还有空间,但是slow.log 和 binlog的磁盘空间占用到100%,所以无法继续插入,清除日志文件,重新测试!

 

 

 

posted @ 2012-06-08 15:36  猪尬亮  阅读(391)  评论(0编辑  收藏  举报