自增id默認(rèn)為int ,int最大值?到2的32冪次方 - 1 = 4294967295
創(chuàng)建一個(gè)只有id的表
create table t1(id int unsigned auto_increment primary key) auto_increment = 4294967295;
insert into t1 values(null);

親測id用完了再插入
建議id使用 bigint類型,最大值 long最大值?9223372036854775807 * 2 +1
如果在創(chuàng)建表沒有顯示申明主鍵,會(huì)怎么辦?
如果是這種情況,InnoDB會(huì)自動(dòng)幫你創(chuàng)建一個(gè)不可見的、長度為6字節(jié)的row_id,而且InnoDB 維護(hù)了一個(gè)全局的 dictsys.row_id,所以未定義主鍵的表都共享該row_id,每次插入一條數(shù)據(jù),都把全局row_id當(dāng)成主鍵id,然后全局row_id加1
該全局row_id在代碼實(shí)現(xiàn)上使用的是bigint unsigned類型,但實(shí)際上只給row_id留了6字節(jié),這種設(shè)計(jì)就會(huì)存在一個(gè)問題:如果全局row_id一直漲,一直漲,直到2的48冪次-1時(shí),這個(gè)時(shí)候再+1,row_id的低48位都為0,結(jié)果在插入新一行數(shù)據(jù)時(shí),拿到的row_id就為0,存在主鍵沖突的可能性。