2017-07-20 13 views
1

MySQLは通常、多くの行のテーブルをうまく処理することを知っています。しかし、私は現在、1つのテーブルが複数のユーザーによって同時に読み書きされる設定に直面しています。テーブルには100億行が含まれる可能性があります。MySQL 1つのテーブルと複数のテーブルの比較

私の設定は、InnoDBストレージエンジンを備えたMySQLデータベースです。

私はいくつかのプロジェクトの中で、そのサイズのテーブルが効率が悪く、インデックスが低速になることがあります。

私は、行を分割するだけの構造がまったく同じ複数のテーブルを持っているとは思いません。 主な質問:しかし、このような大量の行のためにパフォーマンスが低下するという問題は解決しませんか?

その他の質問:このような大きなテーブルを使用するには他に何ができますか?行自体の数は減らすことはできません。

+0

よくある質問よくある答えは「大きなテーブルを分割しない」です。 duskwuffはうまく説明します。 –

答えて

3

私は、このようなサイズのテーブルのインデックスが効率的で低速になるプロジェクトについて聞いたことがあります。

これは一般的ではありません。テーブルの使用方法に応じて適切にインデックスが作成されている限り、非常に大きなテーブルであってもパフォーマンスは妥当なままです。

(ありBTREEインデックスの深さが増加するなど、インデックスのパフォーマンスが非常にわずかな低下があるが、この効果は実質的に無視できる。これは、最小限としても、それは、あなたのインデックスに小さいキーを使用することによって緩和することができます

状況によっては、より適切な解決策がテーブルpartitioningになることがあります。これは、内部的にデータを複数のテーブルに分割しますが、これらのテーブルを単一のテーブルとして公開します。ただし、パーティション化では、表の索引付け方法に関する特定の要件があり、本質的には問合せのパフォーマンスは向上しません。大量の古いデータを一度にテーブルから削除するには、古いパーティションを日付でパーティション化したテーブルから削除すると便利です。

関連する問題