3

簡単に言えば、基本的なユーザーの詳細 (ユーザー ID (インデックス)、ユーザー名、パスワード、親ユーザー、ステータス) が 1 つのデータベースに格納され、拡張されたユーザーの詳細 (同じユーザー ID (インデックス)、氏名、住所) が格納されている大規模なデータベースを扱っています。など)別のサーバー上の別のデータベースに保存されます。

特定のユーザーが所有するすべてのユーザーを (基本ユーザー詳細データベースの親ユーザー フィールドを介して) 選択し、フル ネームで (拡張ユーザー詳細フィールドから) 並べ替え、一度に 25 人だけを選択するクエリを実行する必要があります ( 1 人のユーザーに対して数千、場合によっては数万になります)。

私が解決できる限り、考えられる解決策は 3 つあります。

  1. JOIN なし - 1 つのクエリですべてのユーザー ID を取得し、それらの ID に基づいて 2 番目のクエリを実行します。これは問題ありませんが、ユーザー ID の数が非常に多くなりすぎてクエリの最大長を超えたり、ひどく非効率になる可能性がある場合を除きます。

  2. 基本的なユーザーの詳細を含むデータベース テーブルを、拡張された詳細を含むサーバーに複製して、JOIN を実行できるようにします。

  3. フェデレーテッド ストレージ エンジン テーブルを使用して #2 と同じ結果を得る

3 が最適なオプションのようですが、パフォーマンスに関する情報はほとんど見つかりませんでした。また、実稼働データベースでこれを使用する際には注意が必要なコメントも 1 つ見つかりました。

何が最良の実装になるかについての提案をいただければ幸いです。

ありがとう!

4

2 に答える 2

2

パフォーマンスや制限に関して言えば、Federated Engine には多くの制限があります。トランザクションはサポートされていません。一括挿入を実行するときの FEDERATED テーブルでのパフォーマンスは、他のテーブル タイプよりも遅くなります。

レプリケーションエンジンとフェデレーション エンジンは、同じことを行うためのものではありません。まず、両方試しましたか?

于 2012-09-12T05:39:54.113 に答える