关于mysql中自增加的ID问题

首先明确答复你:超过之后会从0开始编码。下面以表示范围更小的单字节类型为例子说明,如果是有符号数据类型,首先从0开始编码,到127的时候就是最大,下一个数将是-128,随后-127、-126,直到0以后,又会从1开始编码。如果是无符号类型,那么会从0开始到256结束,然后又从0开始编号。上面可能有点...
关于mysql中自增加的ID问题
首先明确答复你:超过之后会从0开始编码。下面以表示范围更小的单字节类型为例子说明,如果是有符号数据类型,首先从0开始编码,到127的时候就是最大,下一个数将是-128,随后-127、-126,直到0以后,又会从1开始编码。如果是无符号类型,那么会从0开始到256结束,然后又从0开始编号。

上面可能有点糊涂,但是仔细看的话,我相信你能明白。

其次我告诉你:你应该选择足够大的数据类型,为了防止数据重复,你可以让你的程序在未来的十年都不会因为这样的问题成为缺陷,下面是MYSQL各数据类型表示的范围:

类型
字节
带符号的范围
无符号的范围

TINYINT
1
-128~127
0~ 255

SMALLINT
2
-32768~ 32767
0~ 65535

MEDIUMINT
3
-8388608~8388607
0~ 16777215

INT
4
-2147483648~2147483647
0~ 4294967295

BIGINT
8
-9223372036854775808~ 9223372036854775807
0~ 18446744073709551615

不直到你的业务有多少,BIGINT类型可能10年不会存满吧。

最后说一句,不要试图去想办法让ID值重复使用,尽管有许多办法可以实现,但那几乎是得不偿失的。2009-01-20
int(11)也就是1000亿,估计你够用了2009-01-20
不行的说2019-10-19
mengvlog 阅读 7 次 更新于 2025-07-19 22:20:05 我来答关注问题0
  • 首先明确答复你:超过之后会从0开始编码。下面以表示范围更小的单字节类型为例子说明,如果是有符号数据类型,首先从0开始编码,到127的时候就是最大,下一个数将是-128,随后-127、-126,直到0以后,又会从1开始编码。如果是无符号类型,那么会从0开始到256结束,然后又从0开始编号。上面可能有点糊...

  •  翡希信息咨询 面试官问:MySQL的自增 ID 用完了,怎么办?

    对于历史数据,可以考虑进行归档处理,将其从主表中移除并存储到备份表中。这样可以释放ID空间,供新数据使用。但需注意,此操作可能涉及数据完整性和一致性的问题。分区表策略:如果表数据量巨大,可以考虑使用MySQL的分区表功能。通过将数据分散到不同的分区中,每个分区可以有自己的自增ID序列,从而有效...

  • MySQL中可以使用 NOT NULL 和 AUTO_INCREMENT约束来实现自动增长的ID,MySQL 5.6 之后增加了GENERATED COLUMN 的特性,可以使用VIRTUAL约束实现自增ID。

  •  翡希信息咨询 mysql自增id列怎么设置?

    在MySQL中设置自增ID列的步骤如下:创建表时设置自增ID列:在CREATE TABLE语句中,指定一个列并使用AUTO_INCREMENT关键字来将其设置为自增列。例如:sqlCREATE TABLE your_table_name , PRIMARY KEY );这里,id列被设置为自增列,并作为表的主键。2. 修改现有表以添加自增ID列: 使用ALTER TABLE...

  • MySQL中的ID自增机制有两种实现方式,分别是使用表锁和使用互斥量。1、使用表锁 MySQL 4.1及以下版本的实现方式是使用表锁,则在往表中插入数据时,需要先锁定整个表,并读取表中已有的最大ID值,然后将该ID值加1作为当前的自增ID值。该方法简单易实现,但会造成并发性能问题,因为每次插入数据都...

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部