1

我正在将一个大型 csv 文件导入 mysql(3000 万行),并且我打开了另一个终端以显示进程列表。我曾经能够看到进程列表上的行数,但现在,每当我输入命令“显示进程列表”时,它就会挂起。我导入了 2000 万条记录。我必须重新开始吗?iostat: [user@gggggg ~]$ iostat Linux 2.6.18-308.4.1.el5

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.02    0.00    0.16    0.87    0.00   93.95

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               2.15         5.31        55.58    8644514   90425752
sda1              0.00         0.00         0.00       2138       5592
sda2              2.15         5.31        55.57    8640178   90419984
sda3              0.00         0.00         0.00       1582        176


top - 14:18:55 up 18 days, 20:00,  2 users,  load average: 2.02, 2.09, 2.06
Tasks: 106 total,   3 running, 103 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.2%us,  0.0%sy,  0.0%ni, 49.9%id, 49.8%wa,  0.0%hi,  0.2%si,  0.0%st
Mem:   8174532k total,  7656780k used,   517752k free,   105904k buffers
Swap:  4257216k total,       88k used,  4257128k free,  6958020k cached
4

1 回答 1

0

首先,从操作系统检查文件大小

如果表名为 mydb.mytable 并且是 MyISAM,请执行以下操作:

cd /var/lib/mysql/mydb
watch ls -l mytable.*

如果文件大小不断增长,你很好

不要忘记检查磁盘空间

df -h

如果您在加载 MyISAM 表时磁盘空间不足,mysqld 就在那里。为什么?根据MySQL 5.0 认证学习指南第 408,409 页第 29.2 节要点 11说:

如果在向 MyISAM 表添加行时磁盘空间不足,则不会发生错误。服务器暂停操作,直到空间可用,然后完成操作。

因此,如果数据分区的磁盘空间不足,您必须释放一些空间,以便 mysqld 可以继续LOAD DATA INFILE.

如果一切看起来都冻结了,您可能必须按如下方式杀死 mysqld:

IDTOKILL=`ps -ef | grep mysqld_safe | grep -v grep | awk '{print $2}'`
kill -9 ${IDTOFKILL}
IDTOKILL=`ps -ef | grep mysqld | grep -v grep | awk '{print $2}'`
kill -9 ${IDTOFKILL}

然后,检查您的磁盘空间

于 2012-06-05T20:57:17.053 回答