mysql频繁insert无响应_mysql - MySQL INSERT INTO临时表未响应 - 堆栈内存溢出

我正在尝试遵循该 SO答案的建议,以将列添加到具有约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进程或守护进程有任何CPU活动,没有足够的可用内存,并且IO活动最少(我从OSX活动监视器中获得了所有这些活动)。

当我使用CTRL-C中止查询并检查内容时,我可以看到我的新表已创建但没有数据。 我用SELECT count(id) FROM psf_new; 。 当我尝试在psf表上运行相同的命令时,我得到一小撮CPU和IO,然后什么也没有发生,除非再次按下CTRL-C,否则不会返回CLI提示符。

更新:

因此,令人尴尬的是,解决方案是重新启动计算机。 事情似乎正在按预期进行。 如果任何人都可以提供关于可能发生的情况的任何见解,例如需要回滚的陈旧事务之类的东西,将不胜感激。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值