【发布时间】:2009-12-05 18:13:04
【问题描述】:
每天我需要使用 ftp 和 mysqlimport 使用从网络下载的新文件更新 MySQL 表。但是,我希望我的网站在 mysqlimport 操作期间保持平稳运行,这需要相当长的时间(这是一张大桌子)。 什么是确保用户不等待导入完成的好方法? 我正在考虑导入一个临时表,然后重命名它。这是个好计划吗?
【问题讨论】:
标签: mysql high-availability mysqlimport
每天我需要使用 ftp 和 mysqlimport 使用从网络下载的新文件更新 MySQL 表。但是,我希望我的网站在 mysqlimport 操作期间保持平稳运行,这需要相当长的时间(这是一张大桌子)。 什么是确保用户不等待导入完成的好方法? 我正在考虑导入一个临时表,然后重命名它。这是个好计划吗?
【问题讨论】:
标签: mysql high-availability mysqlimport
一个鲜为人知的事实是,您可以在 mysql 中连接多个 rename 语句,它会自动执行所有名称更改。
create table newtable like oldtable;
insert into newtable .......
rename table oldtable to deleteme, newtable to oldtable;
drop table deleteme;
重命名表会阻塞读取器(实际上它会阻塞任何名称解析)但应该是一个非常快的操作。
【讨论】:
如果是增量更新,您可以简单地通过 cron / 调度来限制新数据的插入。
每分钟加载 XYZ 记录,查看之前的更新是否完成,制作锁文件,延迟插入,冲洗并重复。
如果您想真正了解它,请让更新脚本在运行时检查服务器负载并相应地调整导入数量。
这将导致新数据成批出现,但可以让您在网站更新时保持网站运行。
【讨论】: