192

MySQL データベース テーブルのレコードの上限は何ですか。自動インクリメントフィールドについて疑問に思っています。何百万ものレコードを追加するとどうなりますか? このような状況をどのように処理しますか?どうも!

4

8 に答える 8

267

整数の最大値は、テーブルに格納できる最大行数とはほとんど関係がありません。

int または bigint を主キーとして使用する場合、主キーのデータ型の一意の値の数と同じ数の行しか持てないことは事実ですが、主キーを整数にする必要はありません。 、CHAR(100)にすることができます。複数の列に対して主キーを宣言することもできます。

テーブルのサイズには、行数以外にも制約があります。たとえば、ファイル サイズに制限のあるオペレーティング システムを使用できます。または、各行のサイズが 1KB の場合、3 億行しか保存できない 300GB のハード ドライブを使用することもできます。

データベース サイズの制限は非常に高いです。

http://dev.mysql.com/doc/refman/5.1/en/source-configuration-options.html

MyISAM ストレージ エンジンはテーブルごとに 2,32 行をサポートしますが、テーブルごとに最大2,64--with-big-tables行をサポートするオプションを使用してMySQL を構築できます。

http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html

InnoDB ストレージ エンジンにはテーブルごとに 6 バイトの内部行 ID があるため、行の最大数は 2 48または 281,474,976,710,656 です。

InnoDB テーブルスペースのテーブル サイズも 64 テラバイトに制限されています。これに収まる行数は、各行のサイズによって異なります。

64TB の制限は、デフォルトのページ サイズが 16KB であることを前提としています。ページ サイズを増やすことができるため、テーブルスペースを最大 256 TB まで増やすことができます。ただし、テーブルをそのサイズに拡大するずっと前に、他のパフォーマンス要因によりこれが推奨されないことがわかると思います。

于 2010-04-26T20:00:52.567 に答える
69

mysql int 型はかなりの数の行を実行できます: http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

符号なしint最大値は4,294,967,295
符号なしbigint最大値です18,446,744,073,709,551,615

于 2010-04-26T19:30:04.537 に答える
15

データを削除しないことをお勧めします。テーブルが1000より長い場合は、テーブルの最後を切り捨てるとは言わないでください。このユーザーが非アクティブであった期間など、実際のビジネスロジックが計画に含まれている必要があります。たとえば、1年を超える場合は、別のテーブルに配置します。これは、遅い時間の真っ只中に、メンテナンススクリプトで毎週または毎月発生します。

テーブル内の多くの行に遭遇した場合は、テーブルのシャーディングまたはパーティション化を開始し、users_2011_jan、users_2011_febなどの年ごとに古いデータを古いテーブルに配置するか、月の数値を使用する必要があります。次に、このモデルで動作するようにプログラミングを変更します。たぶん、より少ない列にデータを要約するために、より少ない情報で新しいテーブルを作成し、ユーザーがプロファイルを表示しているときなど、より多くの情報が必要な場合にのみ、より大きなパーティションテーブルを参照します。これらすべてを非常に慎重に検討する必要があるため、将来的にはリファクタリングするのにそれほど費用がかかりません。また、サイトに常にアクセスするユーザーと、アーカイブされたテーブルのセットにアクセスしないユーザーのみを1つのテーブルに入れることもできます。

于 2012-04-15T02:11:53.527 に答える
11

InnoDB では、64 テラバイトのテーブル サイズの制限と 65,535 の MySQL 行サイズの制限により、1,073,741,824 行が存在する可能性があります。これは、最大行サイズ制限を利用する最小レコード数になります。ただし、行サイズが小さい場合は、より多くのレコードを追加できます。

于 2013-06-21T15:04:23.737 に答える
2

http://dev.mysql.com/doc/refman/5.6/en/features.htmlのスケーラビリティと制限のセクションによると、MySQL は大規模データベースをサポートしています。彼らは、5,000 万件のレコードを含むデータベースで MySQL サーバーを使用しています。一部のユーザーは、200,000 テーブルと約 5,000,000,000 行で MySQL サーバーを使用しています。

于 2013-08-14T13:13:57.770 に答える
-4

制限はありません。それはあなたの空きメモリとシステムの最大ファイルサイズにのみ依存します。ただし、データベースのメモリ使用量に対処する際に予防措置を講じるべきではないという意味ではありません。使用されていない行を削除できるスクリプト、または特定の図内の行の総数、たとえば1000行を保持するスクリプトを常に作成してください。

于 2011-12-21T06:51:31.043 に答える