web-dev-qa-db-ja.com

MySQLデータベーステーブルの最大レコード数

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

157
xpepermint

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です

57
KM.

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

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

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

データベースサイズの制限は非常に高くなっています。

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

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

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

InnoDBストレージエンジンには行数の制限はないようですが、テーブルサイズには64テラバイトの制限があります。これに適合する行数は、各行のサイズによって異なります。

219
Bill Karwin

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

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

12
PHPGuru

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

8
Xylo

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

2
dataq

リンク http://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html

行サイズの制限

特定のテーブルの最大行サイズは、いくつかの要因によって決まります。

MySQLテーブルの内部表現には、ストレージエンジンがより大きな行をサポートできる場合でも、最大行サイズが65,535バイトに制限されています。 BLOBおよびTEXTカラムは、コンテンツが残りの行とは別に格納されるため、行サイズ制限に対して9〜12バイトのみを提供します。

InnoDBテーブルの最大行サイズは、データベースページ内にローカルに保存されているデータに適用され、4KB、8KB、16KB、および32KBのinnodb_page_size設定の場合、ページの半分よりわずかに小さくなります。たとえば、最大行サイズは、デフォルトの16KB InnoDBページサイズの8KBよりわずかに小さいです。 64KBページの場合、最大行サイズは16KBよりわずかに小さくなります。セクション15.8.8「InnoDBテーブルの制限」を参照してください。

可変長列を含む行がInnoDBの最大行サイズを超える場合、InnoDBは、行がInnoDBの行サイズ制限内に収まるまで、外部オフページストレージ用の可変長列を選択します。ページ外に格納される可変長列にローカルに格納されるデータの量は、行形式によって異なります。詳細については、セクション15.11「InnoDBの行ストレージと行形式」を参照してください。

異なるストレージ形式では、異なる量のページヘッダーとトレーラーデータが使用され、行で使用可能なストレージの量に影響します。

InnoDBの行形式については、セクション15.11「InnoDBの行ストレージと行形式」、およびセクション15.8.3「InnoDBテーブルの物理行構造」を参照してください。

MyISAMストレージ形式の詳細については、セクション16.2.3「MyISAMテーブルのストレージ形式」を参照してください。

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

1
N Islam

行サイズの制限

The maximum row size for a given table is determined by several factors:
  • MySQLテーブルの内部表現には、ストレージエンジンがより大きな行をサポートできる場合でも、最大行サイズが65,535バイトに制限されています。 BLOBおよびTEXTカラムは、コンテンツが残りの行とは別に格納されるため、行サイズ制限に対して9〜12バイトのみを提供します。

  • データベースページ内にローカルに保存されているデータに適用されるInnoDBテーブルの最大行サイズは、ページの半分よりわずかに小さくなっています。たとえば、最大行サイズは、innodb_page_size構成オプションで定義されているデフォルトの16KB InnoDBページサイズの8KBよりわずかに小さいです。 「 InnoDBテーブルの制限 」。

  • 可変長列を含む行がInnoDBの最大行サイズを超える場合、InnoDBは、行がInnoDBの行サイズ制限内に収まるまで、外部オフページストレージ用の可変長列を選択します。ページ外に格納される可変長列にローカルに格納されるデータの量は、行形式によって異なります。詳細については、「 InnoDB行ストレージと行形式 」を参照してください。
  • 異なるストレージ形式では、異なる量のページヘッダーとトレーラーデータが使用され、行で使用可能なストレージの量に影響します。