3

每天一次,我需要使用 ftp 和 mysqlimport 从网上下载一个新文件来更新 MySQL 表。但是,我希望我的网站在 mysqlimport 操作期间保持平稳运行,这需要相当长的时间(这是一张大桌子)。什么是确保用户不等待导入完成的好方法?我正在考虑导入一个临时表,然后重命名它。这是个好计划吗?

4

2 回答 2

8

一个鲜为人知的事实是,您可以在 mysql 中连接多个 rename 语句,它将自动执行所有名称更改。

create table newtable like oldtable;
insert into newtable .......
rename table oldtable to deleteme, newtable to oldtable;
drop table deleteme;

重命名表会阻塞读取器(实际上它会阻塞名称的任何解析)但应该是一个非常快的操作。

于 2009-12-05T18:29:12.970 回答
0

如果是增量更新,您可以简单地通过 cron / 调度来限制新数据的插入。

每分钟加载 XYZ 记录,查看之前的更新是否完成,制作一个 lockfile,延迟插入,冲洗并重复。

如果您想真正了解它,请让更新脚本在运行时检查服务器负载并相应地调整导入数量。

这将导致新数据分批出现,但可以让您在更新站点时保持站点运行。

于 2009-12-05T18:25:48.077 回答