ウェブサイトを中断することなく、MySQLのテーブルを更新するには?

StackOverflow https://stackoverflow.com/questions/1852971

質問

私は、mysqlimportは、FTPを使用してネットからダウンロードした新しいファイルを使用して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