我正在将一个较大的csv文件导入mysql(3000万行),并且打开了另一个终端以显示进程列表。我曾经能够查看进程列表中的行数,但是现在,每当我输入命令“ show process list”时,它就会挂起。我导入了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

最佳答案

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

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

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


如果文件大小持续增长,就可以了

别忘了检查磁盘空间

df -h


如果在加载MyISAM表时磁盘空间不足,则mysqld就坐在那儿。为什么?据MySQL 5.0 Certification Study Guide Page 408,409 Section 29.2 bulletpoint 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}


然后,检查您的磁盘空间

关于mysql - 再也看不到进程列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10904584/

10-13 05:53