2016-07-18 8 views
4

大量の行があり、そのうち数百万に近いテーブルがいくつかあります。これらの表の最近のレコードにアクセスしているバックグラウンド・タスクがあります。サイズがますます大きくなるため、タスクは完了するまでに長時間を要します。また、フロントエンドにデータを表示する場合、サーバーへの呼び出しにも非常に時間がかかります。オブジェクトを複製して別のテーブルに保存します

したがって、(アーカイブとして)このようなテーブルのレプリカを作成し、これらの 'アーカイブ'テーブルにデータを保存し続ける方が良いと思いました。レコードは完全に処理されるたびに、「ライブ」テーブルから削除され、「アーカイブ」テーブルに格納されます。

PHPクローンは、元のものとまったく同じエンティティを作成するため、機能しません。 明確な方法の1つは、同じ手順でエンティティを作成し、常に同時に変更を続けることです。

これを行うより良い方法はありますか?

+1

インデックスを正しく使用しているかどうかを確認するには、データベースクエリ(mysqlを使用している場合はEXPLAIN)を分析してください。レコードの数はそれほど例外的ではありません。 – jeroen

答えて

0

あなたが探しているのは「パーティショニング」です。 MySQLとPostgresの両方には、些細なマニュアルがあります。

おそらく、これを実装する最良の方法は、X回ごとに分割クエリを実行するデーモンスクリプトを使用することです。

関連する問題