2009-12-05 139 views
3

每天一次,我需要使用ftp和mysqlimport從網上下載一個新文件來更新MySQL表。但是,我希望我的網站在mysqlimport操作期間保持平穩運行,這需要相當長的一段時間(這是一張大桌子)。 確保用戶不會等待導入完成的好方法是什麼? 我正在考慮導入臨時表,然後重新命名它。這是一個很好的計劃嗎?如何在不中斷網站的情況下刷新MySQL表?

回答

8

一個鮮爲人知的事實是,您可以在mysql中連接多個重命名語句,並且它將以原子方式執行所有名稱更改。

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

重命名錶將阻止讀者(實際上它會阻止名稱的任何分辨率),但應該是一個非常快速的操作。

0

如果是增量更新的情況,您可以簡單地通過cron /調度來限制插入新數據。

每分鐘載入XYZ記錄,查看上一次更新是否完成,鎖定文件,延遲插入,清洗並重復。

如果您想真正瞭解它,請讓更新腳本在運行時檢查服務器負載並相應地調整導入數量。

這會導致新的數據出現在批處理中,但會讓您在更新網站時保持運行。

相關問題