1

大きなcsvファイルをmysql(3000万行)にインポートしていて、プロセスリストを表示するために別のターミナルを開いていました。以前はプロセスリストで行数を確認できましたが、現在は「showprocesslist」コマンドを入力するたびにハングします。2,000万件のレコードをインポートしました。最初からやり直す必要がありますか?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

まず、OSからファイルサイズを確認してください

テーブルの名前が 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によると、セクション 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 に答える