2012-06-05 45 views
1

我正在導入一個大的csv文件到mysql(3000萬行),並且我打開了另一個終端來顯示進程列表。我曾經能夠看到進程列表中的行數,但現在,每當我輸入命令「show process list」時,它都會掛起。我有2000萬條記錄被導入。我必須重新開始嗎? 的iostat: [用戶@ 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 

回答

0

首先,從OS

檢查文件大小。如果表被稱爲mydb.mytable它是MyISAM的,這樣做:

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

如果文件大小不斷增加,你的罰款

不要忘記檢查d iskspace

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} 

然後,檢查您的磁盤空間

+0

所以我應該取消LOAD DATA INFILE? –

+0

有兩個問題:1)你是否沒有使用磁盤空間? 2)桌子還在增長嗎? – RolandoMySQLDBA

+0

我甚至無法檢查磁盤空間,因爲它會掛起,如果我嘗試去所有我的表所在的文件夾。我無法檢查桌子是否增長。我擔心的是我將不得不再次殺死線程,而這將會持續下去。 –