MySQLデータベーステーブルのレコードの上限はいくつですか。自動インクリメントフィールドについて疑問に思っています。何百万ものレコードを追加するとどうなりますか?このような状況にどう対処するか?どうも!
MySQLデータベーステーブルのレコードの上限はいくつですか。自動インクリメントフィールドについて疑問に思っています。何百万ものレコードを追加するとどうなりますか?このような状況にどう対処するか?どうも!
回答:
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
整数の最大値は、テーブルに格納できる最大行数とはほとんど関係ありません。
主キーとしてintまたはbigintを使用する場合、主キーのデータ型の一意の値の数だけ行を含めることができますが、主キーを整数にする必要はありません。 、それをCHAR(100)にすることができます。また、複数の列で主キーを宣言することもできます。
行数の他に、テーブルサイズには他の制約があります。たとえば、ファイルサイズに制限のあるオペレーティングシステムを使用できます。または、各行のサイズが1KBの場合、300GBの行しか格納できない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テラバイトの制限があります。これに適合する行の数は、各行のサイズによって異なります。
データを削除しないでください。テーブルが1000を超える場合は、テーブルの末尾を切り捨てないでください。このユーザーが非アクティブである時間の長さなど、計画には実際のビジネスロジックが必要です。たとえば、1年より長い場合は、別のテーブルに入れます。これは、毎週または毎月、遅い時間の途中のメンテナンススクリプトで行われます。
テーブル内の多くの行にぶつかった場合は、テーブルのシャーディングまたはパーティション化を開始し、users_2011_jan、users_2011_febなどの古いデータを古いテーブルに年ごとに配置するか、月の数字を使用する必要があります。次に、このモデルで動作するようにプログラミングを変更します。より少ない情報で新しいテーブルを作成して、データをより少ない列に要約し、ユーザーがプロファイルを表示しているときなど、より多くの情報が必要な場合にのみ、より大きなパーティションテーブルを参照するようにします。これらはすべて慎重に検討する必要があるため、将来的にリファクタリングするのにコストがかかりすぎることはありません。また、常にサイトにアクセスするユーザーのみを1つのテーブルに入れ、アーカイブされたテーブルのセットには決してアクセスしないユーザーを入れることもできます。
InnoDBでは、テーブルサイズの制限が64テラバイトで、MySQLの行サイズの制限が65,535であるため、1,073,741,824行が存在する可能性があります。これは、最大の行サイズ制限を利用するレコードの最小数になります。ただし、行サイズが小さい場合は、さらに多くのレコードを追加できます。
http://dev.mysql.com/doc/refman/5.6/en/features.htmlの Scalability and Limitsセクションによると、MySQLは大規模データベースをサポートしています。彼らは5000万のレコードを含むデータベースでMySQLサーバーを使用しています。一部のユーザーは、200,000テーブルと約5,000,000,000行のMySQLサーバーを使用しています。
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テーブルの制限」。
リンク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
制限はありません。空きメモリとシステムの最大ファイルサイズにのみ依存します。ただし、これは、データベースのメモリ使用量に取り組む際に予防策を講じるべきではないという意味ではありません。常に、使用されていない行を削除できるスクリプトを作成するか、特定の図、たとえば1000内の行の総数を維持するスクリプトを作成します。