每天一次,我需要使用FTP,然后mysqlimport的从网上下载新的文件更新的MySQL表。不过,我想我的网站保持mysqlimport的操作,这需要相当长的一段时间(这是一个大表)期间的平稳运行。 什么会,以确保用户不会等待导入完成的好办法? 我想导入到一个临时表中,然后重新命名它。那是一个很好的计划?

有帮助吗?

解决方案

有一个鲜为人知的事实是,你可以在MySQL串联不止一个重命名的语句,它会执行所有名称的改变原子。

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

在重命名表将阻止读取器(实际上它会阻止该名称的任何分辨率),但应该是一个非常快速的操作。

其他提示

如果它是一个增量更新的情况下,可以简单地进行节流通过cron /调度的新数据的插入。

加载XYZ记录每一分钟,看看以前的更新已经完成,做一个锁文件,延迟插入,冲洗和重复。

如果你想获得真正聪明一点,必须更新脚本检查服务器负载运行时,并相应调整进口数量。

这将导致新的数据出现在批次,反而会让你保持网站的运行它的更新时间。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top