3

私はWebアプリケーションを構築していて、最初から拡張できるようにしたいと思っています。私はデータベースのスケーラビリティにはあまり興味がなく、次の疑問に直面しています。

数百万行の少数のテーブルを使用する必要がありますか、それとも数百行のテーブルが数千ではないにしても、数百のテーブルに分割する必要があります。

私は両方のルートに行くことができますが、どちらが長期的にはより良いスケールになるかわかりません。

このトレッドに関する情報をいくつか見つけましたが、あまり役に立ちません。MySQL数百万行の1つのテーブルを高速化したり、複数のテーブルを管理したりするにはどうすればよいでしょうか。

基本的に私は知る必要があります、データベースを垂直または水平にスケーリングする方が良いですか?

4

2 に答える 2

4

クエリが適切に調整されていれば、データベースは十分に高速に応答します。クエリをわずかに調整するだけで、魔法のように速度が変化する可能性があります。

ただし、データベースでの講義は必要ありません。あなたの質問に: ここで最も重要なことは、正規化フォームを実現することです。

テーブルは管理しやすく、冗長性がない必要があります。冗長性を避けるために、テーブルを可能な限り正規化する必要があります。ノーマライゼーション フォームは 6NF までですが、この分野の経験がない場合は、ボイス コッドのノーマル フォームで十分だと思います。

于 2013-01-12T23:25:52.523 に答える
2

よくIsmetによって言われました。ただし、Web を扱う場合、追跡したい特定の「集計」またはその他の合計があり、多少時間がかかる場合があります。

そのようなカテゴリがある場合は、そのようなエントリに必要な追加の列を「追加」することを検討することをお勧めします。次に、レコードが任意のテーブルに追加されると、挿入/更新トリガーを実行してこれらの値を更新するだけで済みますが、何百万ものレコードから取得する完全なクエリを明示的に再実行してパフォーマンスを低下させる必要があります。

于 2013-01-13T00:23:30.073 に答える