私は1日あたり約1万から2万行を話すデータで急速に満たされたデータベースを持っています。
自動インクリメントオプションを使用したIDの制限とは何ですか? IDがINTEGERとして作成されている場合、符号なしの値に対して最大値2,147,483,647を実行できますか?
しかし、オートインクリメントがこれを超えるとどうなりますか?それはすべて崩壊しますか?それでは解決策は何でしょうか?
多くの人が大きなデータベースを持っていると確信していますので、聞いてみたいと思います。
ありがとうございました。
範囲外に急速に成長することが心配な場合は、PKを無署名のBIGINTとして設定します。これにより、最大値18446744073709551615が得られますが、これで十分です。
| Min. (inclusive) | Max. (inclusive)
-----------------------------------------------------------------------------
INT Signed (+|-) | -2,147,483,648 | +2,147,483,647
-----------------------------------------------------------------------------
INT Unsigned (+) | 0 | 4,294,967,295
-----------------------------------------------------------------------------
BIGINT Signed (+|-) | -9,223,372,036,854,775,807 | +9,223,372,036,854,775,806
-----------------------------------------------------------------------------
BIGINT Unsigned (+) | 0 | 18,446,744,073,709,551,615
列ID(INT unsigned)を持つmysqlテーブルがあり、テーブルに4,294,967,295レコードがある場合、さらに1レコードを挿入しようとすると、新しいレコードのIDは自動的に変更され、「4,294,967,295」である最大値に設定されます。そのため、MySQLエラーメッセージが表示されますDuplicate entry '4294967295' for key 'PRIMARY'
、列が主キーとして設定されている場合、IDが重複します。
2可能な解決策: