mysql-id auto_increment.md

360 阅读1分钟

删除前面的数据 影响递增吗?

不影响。

自增id 1.插入1000条数据 2.再删除100条 3.再插入 id怎么改变?id一直在自增。删除前面的数据 也一样递增 没有任何影响。

底层原理

mysql维护一个字段 保存了id字段的最大值 无论表数据是否删除 后面的记录插入时 都以这个字段的值(即当前id字段的最大值)递增。

最大值?

看你设置多少位。一般11位。

工作使用

11位数 100亿
1.action表 10万用户 * 10个应用 * 10次 * 每天 = 1000万数据/每天
亿/月
百亿/年 //id达到最大值?怎么办?

2.count表
10万用户 * 10个应用 * 每天 = 100万数据/每天
千万/月
亿/年

长度

CREATE TABLE IF NOT EXISTS kk_user_action (
    id INT(11) NOT NULL AUTO_INCREMENT,
    user_id INT(32) NOT NULL,
    event VARCHAR(256) NOT NULL,
    last_update BIGINT(20) NOT NULL,
    PRIMARY KEY (id),
    INDEX (user_id),
    INDEX (last_update)
) ENGINE=INNODB; 

如果从中间设置了其他值 那么从该值开始递增 而不是之前的最大值

1
100

150 //手动设置150
151 //后面的就从150开始递增 而不是100

达到最大值 怎么办

int(11) 改为 BIGINT //可以使用几百年
biancheng.dnbcw.net/mysql/23993…

interger和int

在mysql里 二者一样

参考

dev.mysql.com/doc/mysql-t… dev.mysql.com/doc/refman/…