ウェブサイトを中断することなく、MySQLのテーブルを更新するには?
-
13-09-2019 - |
質問
私は、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は、すすぎと繰り返し、遅れ挿入、前回の更新が終了した場合には、ロックファイルを作る参照、毎分を記録します。
あなたはそれについて本当のスマート取得したい場合は、更新スクリプトが実行時にサーバーの負荷をチェックし、それに応じて輸入の数を調整する必要があります。
この新鮮なデータをバッチで表示されますが、それは更新されている間、あなたが実行しているサイトを維持できるようになる。
所属していません StackOverflow