MySQL INSERT INTO临时表没有响应

时间:2014-01-24 16:32:39

标签: mysql

我正在尝试按照this的建议回答将列添加到现有表中,行数约为150k。这是在我的MacBook Pro的本地主机上运行。以下是我在MySQL命令行中使用source命令运行的脚本:

# Create a temporary new table.
CREATE TABLE psf_new LIKE psf;
ALTER TABLE psf_new ADD COLUMN filter varchar(25) AFTER filename;
ALTER TABLE psf_new ADD COLUMN aperture varchar(50) AFTER filter;

# Add some of the indexes we'll need in the future.
CREATE INDEX filename_index ON psf_new (filename);  
CREATE INDEX filter_index ON psf_new (filter);
CREATE INDEX aperture_index ON psf_new (aperture);
CREATE INDEX psf_x_center_index ON psf_new (psf_x_center);
CREATE INDEX psf_y_center_index ON psf_new (psf_y_center);

# Copy over the existing data from the old table.
INSERT INTO psf_new (
    id, 
    filename, 
    psf_x_center, 
    psf_y_center, 
    model_x_center, 
    model_y_center, 
    psf_flux, sky, 
    psf, 
    model_fraction) SELECT * FROM psf;

# Rename and drop.
RENAME TABLE psf_new TO psf, psf TO psf_old;
DROP TABLE psf_old;

一切似乎都工作正常,直到它到达INSERT语句然后才停止。我知道这是一个昂贵的操作(我在尝试之前采用的数据库转储是500M)。但我没有看到来自MySQL进程或deamon的任何CPU活动,有足够的可用内存和最小的IO活动(我从OSX活动监视器获得所有这些)。

当我用CTRL-C中止查询并检查一些东西时,我可以看到我的新表已被创建,但它没有数据。我用SELECT count(id) FROM psf_new;执行此操作。当我尝试在psf表上运行相同的命令时,我得到一小段CPU和IO然后没有任何反应,除非我再次按CTRL-C,否则不会返回CLI提示符。

更新

所以,令人尴尬的是,解决方案是重启我的机器。事情似乎正如预期的那样发挥作用。如果任何人都可以提供有关可能发生的事情的任何见解,可能需要回滚的陈旧事务,这将是值得赞赏的。

0 个答案:

没有答案