大量のデータがログに記録されるテーブルをホストする新しい MySQL データベース (エンジンとして InnoDB を使用) を設計しています (1 日あたり約 200 万レコード、保持される 5 年間のデータ = 約 3 650 000 000 行)。さて、これらすべてを 1 つのテーブルに格納するのはあまり賢明な考えではないことは明らかなので、これらはほとんど私のオプションです。
- テーブルでパーティショニングを使用します(これにより、この規模で実際にどの程度の改善が得られるでしょうか?)
- それぞれ 1 か月分のデータを含む新しいテーブルを生成します(つまり、テーブルごとに約 60 000 000 行)
ある種のマルチマスター レプリケーション (またはクラスタリング) を行う必要があることにも注意する必要があります。
現在、オプション 2の方が適切であると考えています。これにより、(ユーザーが検索する日付を指定した場合に) 可能な限り最小のデータ セットを照会できるようになり、5 年後のデータのアーカイブも簡素化されます (テーブル全体を移動するだけです)。ただし、オプション 2 を使用すると、結果セットを生成するために、結合、ユニオンを使用するか、複数の個別のクエリを実行する必要があることを意味します (後者は、他の方法で順序付けする必要がある場合は推奨されません)。日にち)。
それで、私の質問は、結合を使用する以外に、実際に速度に重点を置く方法で、複数のテーブルにわたってクエリを並行して実行する方法はありますか? . Google のように、多かれ少なかれこの種のことを行うことで検索速度を上げている人のことを考えています。
ありがとう!