30

MySQL テーブルの最大サイズは? 50GBで200万ですか?80GBで500万?

サイズスケールの上限では、データの圧縮について考える必要がありますか? または、テーブルが大きくなりすぎた場合はテーブルを分割しますか?

4

2 に答える 2

40

私はかつて、非常に大きな (テラバイト以上) MySQL データベースを扱っていました。私たちが持っていた最大のテーブルは、文字通り 10 億行を超えていました。

出来た。MySQL はほとんどの場合、データを正しく処理しました。非常に扱いにくかったですが。

データをバックアップして保存するだけでも大変でした。必要に応じてテーブルを復元するには数日かかります。

1,000 万から 1 億行の範囲の多数のテーブルがありました。テーブルへの重要な結合は時間がかかりすぎて、永遠にかかります。そのため、テーブルを「ウォーク」し、「id」の範囲に対して結合を処理するストアド プロシージャを作成しました。このようにして、一度に 10 ~ 100,000 行のデータを処理します (id の 1 ~ 100,000 に対して結合し、次に 100,001 ~ 200,000 など)。これは、テーブル全体に対して結合するよりも大幅に高速でした。

主キーに基づいていない非常に大きなテーブルでインデックスを使用することも、はるかに困難です。Mysql はインデックスを 2 つの部分に分けて格納します。インデックス (プライマリ インデックス以外) をプライマリ キー値のインデックスとして格納します。そのため、インデックス付きルックアップは 2 つの部分で行われます。最初に MySQL はインデックスに移動し、検索する必要があるプライマリ キー値をそこから取得します。次に、プライマリ キー インデックスで 2 回目のルックアップを実行して、それらの値がどこにあるかを見つけます。

つまり、非常に大きなテーブル (100 万から 2 億以上の行) の場合、テーブルに対するインデックス作成はより制限的になります。より少ない単純なインデックスが必要です。また、直接インデックスにない単純な select ステートメントを実行しても、元に戻らない可能性があります。Where 句はインデックスにヒットするか、それを忘れる必要があります。

しかし、そうは言っても、物事は実際に機能しました。これらの非常に大きなテーブルで MySQL を使用して計算を行い、正しい答えを得ることができました。

于 2010-11-23T10:57:48.187 に答える
0

最初の質問についてですが、データベースの有効な最大サイズは通常、オペレーティング システムによって決まります。具体的には、MySQL サーバー自体ではなく、MySQL サーバーが作成できるファイル サイズです。これらの制限は、テーブルサイズの制限に大きな役割を果たします。また、MyISAM は InnoDB とは動作が異なります。したがって、すべてのテーブルはこれらの制限に依存します。

InnoDB を使用すると、テーブル サイズを操作するためのオプションが増えます。この場合、テーブルスペースのサイズ変更はオプションであるため、サイズ変更を計画している場合は、これが最適です。The table is full error ページを見てください。

必要なすべての情報 (OS、テーブルの種類、列、それぞれのデータ型とサイズなど...) が与えられた場合の各テーブルの実際のレコード数はわかりません。また、この情報が簡単に計算できるかどうかもわかりませんが、いくつかのケースで約 1bi レコードの単純なテーブルを見てきましたが、MySQL はあきらめませんでした。

于 2008-09-07T18:28:09.090 に答える