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