MySQL には多くの自己増加 ID があり、各自己増加 ID は初期値を定義し、ステップ サイズを増やし続けます。自然数に上限はありませんが、コンピュータでは、この数を表すバイト長が定義されている限り、上限があります。たとえば、符号なし整数 (unsigned int) は 4 バイトで、上限は 232-1 です。
自動インクリメントIDには上限があるため、使い切る場合があります。しかし、自己インクリメント ID が使い果たされるとどうなるでしょうか? 今日の記事では、MySQL の自己増加型 ID をいくつか見て、それらの値が上限に達するとどうなるかを分析してみましょう。
テーブル定義自己インクリメント ID
自動インクリメントIDといえば、まず思いつくのはテーブル構造定義の自動インクリメントフィールド、つまり前回の記事「なぜ自動インクリメントの主キーが連続しないのか」です。" と、導入した自己インクリメント主キー ID。
テーブルで定義された自己インクリメント値が上限に達した後のロジックは、次の id を申請するときに、取得された値は変更されません。
create table t(id int unsigned auto_increment primary key) auto_increment=4294967295; insert into t values(null ) ; //Successfully insert
into t values(null);
//Successfully insert a row 4294967295
show create table t;
/* CREATE TABLE t
(
id
int (10) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY ( id
)
) ENGINE=InnoDB AUTO_INCREMENT=4294967295;
*/
t 値 (null) に挿入します。
//複製