2016-07-21 4 views
1

小さなデータベース(1台のマシンn1)と非常に大きなデータベース(マシンn2の10億レコード)を結合する必要があります。 アプリケーションサーバーは、dbサーバーのデータをメモリに読み込む必要があります。 最初に小さなデータベースを読みますか?その後、2番目のdbから読み込みますか?小さなテーブルと大きなテーブルの間の結合を最適化する方法は?

これはどのようにして最速で実行できますか? これは一般的にどのように実生活で行われますか?

答えて

0

一般的に、処理をデータベースにプッシュしようとする必要があります。たぶん大きなデータベースサーバーは、小さな1つのローカルをプルして、サーバー上のすべてを処理できます。

アプリケーションで処理する場合は、一般的に最適な戦略は、ハッシュ結合を実行することです。小さなデータセットをハッシュテーブルに変換します。次に、大きなデータセットのアイテムをそのハッシュテーブルに対して調べることができます。これはほとんどメモリとCPUを必要とせず、大きなデータセットをストリーミングすることができます。

この戦略は、結合条件が等価(たとえばOrders.CustomerID = Customers.ID)で、2つのセットのうちの1つがメモリに収まるのに十分小さい場合は常に機能します。

関連する問題