MySqlデータベースには、常にアクセスされる一連の関連データ(合計50,000行で容量が少ない)が含まれています。 。定期的に(1日1回)、すべてのテーブルのすべてのデータを更新する必要があります(フルリフレッシュ)。永久にアクセスしている間に複数のテーブルを更新する
私は2つの可能性を考慮しています:読み込み/ロック
がをバージョン管理を使用
使用取引を、私はそれと連携するかどうかはわかりません:バージョンを追加します同じバージョンの同じ「パブリケーション」にすべての行を設定します。次のパブリケーションにはバージョン+1があり、下位バージョンの行は削除できます。現在のバージョンはパラメータテーブルに格納されているので、読み取りクエリは常に最新の使用可能なバージョンを選択できます。
誰もが両方のソリューションを試していますか?または任意の異なる/より良い解決策?データベース全体を交換するテーブル全体
CREATE TABLE new LIKE real;
populate `new` with the new stuff -- the slow part
RENAME TABLE real TO old,
new TO real; -- atomic and fast.
交換
おかげで
ロックとトランザクションを混在させています。それらは関連した概念ですが、まだ異なります。トランザクションは、データへの一連の変更がまったく起こるかどうかを確認します。トランザクション対応テーブルエンジンを使用する場合は、何を問わずデータを変更するときにトランザクションを使用します。だから、あなたは2つの解決策、1つしか解説しませんでした。 – Shadow
2つの主な種類のソリューションがあります。更新レコードを挿入するか、挿入します(1つのテーブルとバージョン管理または2つの同一のテーブルが交互に表示されます)。あなたはあなたのために一番良いものを自分でテストする必要があります。 – Shadow