我正在将一个较大的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/