每天一次,我需要使用ftp和mysqlimport从Net下载的新文件更新MySQL表。但是,我希望我的网站在mysqlimport操作期间保持平稳运行,这需要相当长的时间(这是一个很大的表)。 什么是确保用户不等待导入完成的好方法? 我正在考虑导入临时表,然后重命名它。这是一个好计划吗?
答案 0 :(得分:8)
一个鲜为人知的事实是,您可以在mysql中连接多个重命名语句,它将以原子方式执行所有名称更改。
create table newtable like oldtable;
insert into newtable .......
rename table oldtable to deleteme, newtable to oldtable;
drop table deleteme;
重命名表会阻止读者(实际上它会阻止名称的任何解析),但应该是一个非常快速的操作。
答案 1 :(得分:0)
如果是增量更新的情况,您可以通过cron / scheduling简单地限制新数据的插入。
每分钟加载XYZ记录,查看先前的更新是否已完成,制作锁定文件,延迟插入,冲洗和重复。
如果您想真正了解它,请让更新脚本在运行时检查服务器负载并相应地调整导入数。
这会导致新批量数据出现,但会让您在网站更新时保持网站正常运行。