0

InnboDB と MySQL を使用しているときに、大きなテーブルを複数の小さなテーブルに分割すると、利点または欠点はありますか? もちろん、実際の innoDB ファイルを分割することについて話しているわけではありません。複数のテーブルを使用するとどうなるか疑問に思っているだけです。

状況: 何百万もの行 (アイテム) を持つ REAL 大きなテーブルがあり、それらは分類されています (列「カテゴリ」)。現在、代わりにカテゴリごとに別の表を使用することを考えています。保証されている状況下では、複数のテーブルにまたがるデータは必要ありません。

4

1 に答える 1

0

一般的に言えば、テーブルが互いに関連性を持たない場合、すべてをキャッチするテーブルではなく、別々のテーブルに配置する必要があります。

ただし、それらが関連している場合は、実際には 1 つのテーブルに存在する必要があります。大きなテーブルのパフォーマンスは、さまざまな方法で管理できます。テーブルが大きくなりすぎて問題が発生し始める場合は、テーブルのパーティション分割を検討することをお勧めします。

ただし、あなたが言うように、数百万行は「本当の大きなテーブル」ではありません。数千万行のテーブルがたくさんあり、数億行のテーブルさえあります。パーティショニングとリードレプリカ。

編集 1 - コメントに応じて:

キーと値のペアの各キーで動的テーブルを作成することは、あなたが正しく言うように、異常で、醜く、非常に間違っています。RDBMS のリレーショナル部分を無効にしていることになります。あなたのスキーマとあなたが達成したいことの詳細な情報がまだこの質問に欠けているので、私が次のことを具体的に言うことは不可能ですが、元の回答を編集するのに十分理解していると感じています.

同じデータベース内のテーブルを分割することと、別のデータベースに新しいテーブルを作成することについては、大きな違いがあります。パフォーマンスについて質問すると、インデックス作成用のメモリや基礎となるデータ ストレージの IO などの十分なリソースがあり、データ ストレージがない場合は、一般的に同じ (1000 GB データベースの新しいテーブルと 0 GB データベースの 1 つのテーブル) を実行する必要があります。ボトルネック。

動的テーブル ("table_{category}") を作成したり、値/カテゴリをテキスト ファイルに保存したりする理由がよくわかりません。これは、1 対 N の関係と JOIN が必要なように思えます。

于 2013-03-03T15:09:22.550 に答える